在 pgsql 中,使用 Fastest 大数据批量插入时,时间字段会自动+8h,改使用 Insertable 不会 返回

SqlSugar 处理完成
8 99
该叫什么 mingsnx 发布于1周前
悬赏:0 飞吻

问题详细描述:

在使用日分表的大批量数据写入时(Fastest),其中的 createtime 时间列字段在数据入库后被自动增加 8 小时。如果改成使用普通的 Insertable 则时间列正常,不会自动增加8小时


数据库版本:pgsql 使用了12.6 版本和 16.1版本都有此情况


数据库表定义如下:


[SplitTable(SplitType.Day)]

[SugarTable(nameof(logger_master) + "__{year}{month}{day}")]

public class logger_master

{

    [SugarColumn(IsPrimaryKey = true)]

    public long logid { get; set; }


    [SugarColumn(Length = 50)]

    public string traceid { get; set; } = string.Empty;


    [SugarColumn(Length = 32)]

    public string logtype { get; set; } = string.Empty;


    [SugarColumn(Length = 32, IsNullable = true)]

    public string version { get; set; } = "1.0.0";


    [SugarColumn(ColumnDataType = "text")]

    public string content { get; set; } = string.Empty;


    [SplitField]

    [SugarColumn(ColumnDataType = "timestamptz")] 

    public DateTime createtime { get; set; }

}


批量插入代码:

DbContext.Instance 是 SqlSugarScope 类型

// 数据

var entitys = List<logger_master>(); 


使用 Fastest 的代码

await DbContext.Instance.Fastest<logger_master>().PageSize(10000).SplitTable().BulkCopyAsync(entitys);


使用 Insertable 的代码

await DbContext.Instance.Insertable<logger_master>(entitys).SplitTable().ExecuteCommandAsync();


请求指导(膜拜)

热忱回答8

  • 这个需要本地测试一下

    0 回复
  • 正常应该不会有这个问题, bulkcopy成熟一年多了,我这边晚点确认

    0 回复
  • 0 回复
  • @mingsnx

     不要用 timestamptz,删掉类型就可以了


                public DateTime createtime { get; set; }


    0 回复
  •  bulkcoppy好像不支持 timestamptz

    0 回复
  • 删掉以前的表,重新codefirst

    0 回复
  • @fate sta收到,感谢大大

    0 回复
  • ok了

    0 回复