ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

duckdb数据库操作

duckdb数据库操作

和sqlite对比主要的区别就是duckdb是按列存储,并且数据文件有压缩。在数据分析领域比sqlite有优势

//批量插入,速度快
DuckDBConnection cn = new DuckDBConnection(@"Data Source=E:\tmp\duckdb2.db");
cn.Open();
using (DuckDBAppender appender = cn.CreateAppender("t1")) //数据库表名t1
{
for (int i = 10; i <= 10000; i++)
{
// 开始新行
IDuckDBAppenderRow row = appender.CreateRow(); //.app.AppendRow();

// 添加列值(必须按表定义的顺序)
row.AppendValue(i); // id
row.AppendValue($"中国人:{i}"); // location

// 结束行
row.EndRow();
}
appender.Close();
}
cn.Close();

 

//查询数据

DuckDBConnection cn = new DuckDBConnection(@"Data Source=E:\tmp\duckdb2.db");
cn.Open();
string msg = "";
DataTable dt = new DataTable();

string querySQL = @" SELECT * FROM t1 ";
using (var command = new DuckDBCommand(querySQL, cn))
using (var reader = command.ExecuteReader())
{
dt.Load(reader);  //没有Adapter的fill,可用load写到DataTable

while (reader.Read())
{
int id = reader.GetInt32(0);
string name = reader.GetString(1);
msg += $"{id},{name}/";
}
}

this.textBox1.Text = msg;
this.dataGridView1.DataSource = dt;

cn.Close();

 

//更新

未实际Adapter的fill,故无法对DataTable做update操作

返回列表