为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。 【DM版本】: v8 【操作系统】:linux 【CPU】: 【问题描述】*:表A字段C1,有非空约束。使用dmfldr工具读取csv文件,入库表A。但是文件部分行中C1对应列无值,此时怎么赋予一个默认值,避免插入null。ctl需要怎么配置。
可以尝试用constant关键字指定常量的方式,如下面的例子: 我们先创建测试表DMFLDR_TEST1
DROP TABLE DMFLDR_TEST1; CREATE TABLE DMFLDR_TEST1(C1 VARCHAR(100),C2 VARCHAR(100),C3 DATE);
准备只有C2,C3列的数据文件data.txt
C2,C3 1,2015-11-06 2,2015-11-05 3,2015-11_04
编写dmfldr的ctl控制文件test.ctl,跳过第一行,分隔符为",",且第一列用常量aaaaaa代替,后续依次是第二列、第三列:
OPTIONS ( SKIP = 1 ROWS = 50000 DIRECT = TRUE INDEX_OPTION = 2 ) LOAD DATA INFILE 'C:\Users\Administrator\Desktop\2025-study\20250908-dmfldr默认值\data.txt' INTO TABLE DMFLDR_TEST1 FIELDS ',' ( C1 CONSTANT "aaaaaa", C2 , C3 DATE FORMAT 'yyyy-mm-dd' )
使用dmfldr工具导入测试数据文件:
dmfldr.exe userid=SYSDBA/"""Testdba@123"""@localhost:5236 control='C:\Users\Administrator\Desktop\test20250908\test.ctl' badfile='C:\Users\Administrator\Desktop\test20250908\test.bad'
查询表数据确认,C1列为常量值aaaaaa:
可以尝试用constant关键字指定常量的方式,如下面的例子:
我们先创建测试表DMFLDR_TEST1
准备只有C2,C3列的数据文件data.txt
编写dmfldr的ctl控制文件test.ctl,跳过第一行,分隔符为",",且第一列用常量aaaaaa代替,后续依次是第二列、第三列:
使用dmfldr工具导入测试数据文件:
查询表数据确认,C1列为常量值aaaaaa:
