ALTER TABLE HisData RESUME WAL;
ALTER TABLE HisData RESUME WAL FROM TRANSACTION 5;
为什么sqlsugar不支持QuestDb 把数据转换为csv然后通过questdb内置接口进行数据提交
性能差不多,另外自已写的东西稳定不能保证
@fate sta:我们现场通过这种直连的方式出现了很多问题,比如分区表死掉无法恢复等情况,系统占用高等情况。更换成这种流式接口提交数据的方式后目前还没发现之前的问题,建议官方QuestDb也加上这种流式接口提交数据的这种方式
@北凉不悲凉:你用了WAL表了吗
常见错误:00000: table busy [reason=insert]
解决方案:https://github.com/questdb/questdb/issues/1461
要使用WAL表
@fate sta:用的就是wal表,你看我表全死掉了,用语句都修复不了。
ALTER TABLE HisData RESUME WAL;
ALTER TABLE HisData RESUME WAL FROM TRANSACTION 5;
@北凉不悲凉:你能扣一份出来我集成进去。
@fate 你去下一份源码,他们里面有做
@北凉不悲凉:我处理一下吧,questdb支持一下
@fate sta:
Nuget安装
SqlSugar.QuestDb.RestAPI
代码如下:
var i= await db.RestApi().BulkCopyAsync(list); //不是Fastest是RestApi() //安装这个就行了 SqlSugar.QuestDb.RestAPI
有时候我发现我真是个天才。。。只花了半小时搞定了
好像有点问题,我插入的时间为NULL 我在研究一下
隔壁框架一样的,插入不进去时间
@fate sta:时间要this.RealTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff") 这样的格式才能插入wal表
@北凉不悲凉:那就没有问题了,你试试,已支持了
BulkCopy("yyyyyxxx") 设置一下格式
特性Format 也设置一下
[Format("yyyy-MM-ddTHH:mm:ss.fffffff")]
public DateTime CreateTime { get; set; }
我测试通过了
@fate sta:好的
@北凉不悲凉:更新最新什么不用设置全处理好了
@北凉不悲凉:更新最新什么不用设置全处理好了
@fate sta 你好,插入的时候调用的db.RestApi().BulkCopyAsync(list),并发查询时报这个错误,知道是什么原因吗?
LogLevel:Error
Message:"errorlog":One or more errors occurred. (00000: table busy [reason=unknown])
System.AggregateException: One or more errors occurred. (00000: table busy [reason=unknown])
---> Npgsql.PostgresException (0x80004005): 00000: table busy [reason=unknown]
at Npgsql.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|194_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)
at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
at SqlSugar.AdoProvider.GetDataReaderAsync(String sql, SugarParameter[] parameters)
at SqlSugar.AdoProvider.SqlQueryAsync[T,T2,T3,T4,T5,T6,T7](String sql, Object parameters)
at SqlSugar.AdoProvider.SqlQueryAsync[T](String sql, SugarParameter[] parameters)
Exception data:
Severity: ERROR
SqlState: 00000
MessageText: table busy [reason=unknown]
Position: 1
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
at System.Threading.Tasks.Task`1.get_Result()