注册

.net DMBulkCopy Clob字段间隔性丢失

Rex 2023/08/18 675 14

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:dm8_20220719_x86_rh6_64_sec_8.1.2.128_pack2
【操作系统】:Windows / Linux
【CPU】:x86
【问题描述】*:.net DMBulkCopy Clob字段间隔性丢失
测试好多天了,程序不报错,就是有些计划导入后为空,也不是长度太长问题,
.net 驱动最新版本,从oracle 最导数据共699条,导入后一般是100来条不正确
如果,sqlbulkcopy.BatchSize = 1;改为1就正常
核心代码

using DmBulkCopy sqlbulkcopy = new((DmConnection)connction); sqlbulkcopy.DestinationTableName = tableName; //sqlbulkcopy.BatchSize = 1; if (!dr.IsClosed) { int fieldCount = dr.FieldCount; for (int i = 0; i < fieldCount; i++) { string fieldName = dr.GetName(i); if (!notFields.Contains(fieldName)) { sqlbulkcopy.ColumnMappings.Add(fieldName, fieldName); } } sqlbulkcopy.WriteToServer(dr); }

尝试多参数绑定也是一样

   private static void ExcuteBat(string sql, DbConnection connction, Dictionary<string, List<object>> dic) {
            DmCommand cmd = new DmCommand(sql, (DmConnection)connction);
            foreach (var p in dic) {
                var s = new DmParameter(p.Key, p.Value.ToArray());
                if (p.Key == "O_BODY") {

                    s.DbType = DbType.StringFixedLength;
                    s.DmSqlType = DmDbType.Clob;
                }
                cmd.Parameters.Add(s);
            }
            cmd.ExecuteNonQuery();
        }

无耐有CLOB字段时改为普通SQL插入比较慢,有些表有上亿记录了,整库同步要好几天了。

回答 0
暂无回答
扫一扫
联系客服