QuestDB使用DataTable批量插入失败 返回
版本信息:
运行环境:net8
SqlSugar.QuestDb.RestAPI:4.1.18
SqlSugarCore:5.1.4.204
questdb:9.0.3 Windows版本
我的数据库表结构很简单(WebUI界面生成的)
CREATE TABLE '测试表' ( 创建时间 TIMESTAMP, 测试数据 STRING ) timestamp(创建时间) PARTITION BY MONTH WAL WITH maxUncommittedRows=500000, o3MaxLag=600000000us;
这是我的测试代码
SqlSugarClient db = new SqlSugarClient(new ConnectionConfig() {
ConnectionString = "host=localhost;port=8812;username=admin;password=quest;database=qdb;ServerCompatibilityMode=NoTypeLoading;",
DbType = SqlSugar.DbType.QuestDB,
IsAutoCloseConnection = true,
LanguageType = LanguageType.Chinese//错误提示尽可能显示中文
});
if (!db.Ado.IsValidConnection()) {
throw new Exception("数据库连接失败");
}
var dt = new DataTable();
dt.Columns.Add("创建时间", typeof(DateTime));
dt.Columns.Add("测试数据");
for (int i = 0; i < 100000; i++) {
var dr = dt.NewRow();
dr[0] = DateTime.Now;
dr[1] = $"数据{i}";
dt.Rows.Add(dr);
}
//int num = db.Insertable(dic).AS("测试表").ExecuteCommand();//单条插入无区别
int num = db.RestApi().BulkCopy("测试表", dt, "yyyy-MM-dd HH:mm:ss");//批量插入问题现象:单条插入没啥问题,但是创建DataTable然后插入,有几秒的插入时间,但是返回值是0,数据库查询也没插入进去
还有个奇怪的现象:db.Ado.IsValidConnection()这行语句执行有点慢,得有1秒了
顺带问问这个数据库需要设置IsAutoCloseConnection = true吗?
热忱回答(9)
-
fate sta VIP0
2025/9/29是不是网络不稳定,正常来说这个方法不会慢的。
0 回复 -
✎森ꦿོ森ꦿོএ VIP0
2025/9/29@fate sta:我是localhost啊……还有DataTable插入的问题咋整?需要设置AutoCloseConnection吗?支持SqlSugarScope吗?我测试支持传统update语句的,偶尔用update更新点东西应该没问题吧?
0 回复 -
fate sta VIP0
2025/9/29代码有没有乱用并发之类的。
0 回复 -
✎森ꦿོ森ꦿོএ VIP0
2025/9/29@fate sta:我提供的测试代码就是全部了,Main里执行的,单线程
0 回复 -
fate sta VIP0
2025/9/29我测试过了。这个操作就第一次慢。。
var x= db.Ado.IsValidConnection(); 后面就快了。
0 回复 -
fate sta VIP0
2025/9/29程序启动的第一次会慢些
0 回复 -
✎森ꦿོ森ꦿོএ VIP0
2025/9/29@fate sta:DataTable插入目前还不支持吗?我尝试建了一个实体类进行插入,也是一样的问题。
[SugarTable("测试表")] public class 测试类 { public DateTime 创建时间 { get; set; } public string 测试数据 { get; set; } }代码处
var list = new List<测试类>(); for (int i = 0; i < 100000; i++) { list.Add(new 测试类() { 创建时间 = DateTime.Now, 测试数据 = $"数据{i}" }); } int num = db.RestApi().BulkCopy<测试类>(list, "yyyy-MM-dd HH:mm:ss.ffffff");num返回值依旧是0,数据库没有插入成功,是我哪里写错了吗?
0 回复 -
fate sta VIP0
2025/9/29
0 回复 -
fate sta VIP0
2025/9/29如果你用不了用就用传统写法了吧。 bulkcopy部分用户好像时间格式有问题。
但是并没找到具体方案。
0 回复