为了备战达梦DCP考试,在本地环境测试dmfldr快速导入功能。期间遇到一个问题:同一台机,dmfldr直接使用参数导入不能正确读取我的本地文件,导致导入报错,而采用control的方式可正常导入。几经周折,最终发现是命令使用错误导致。
数据表结构如图:
测试过程如下:
1.首次采用fmfldr导入时,由于源数据质量问题(文件中的列比表实际列少),因此导入报错。
之后我将源文件的数据列和表数据对齐,导入还是报错
2.尝试新编辑一个数据文件(/opt/prod1.dat),只保留一行数据与表结构列数相同的数据,测试导入,依旧显示导入报错,且报错和之前报错相同(16行导入失败,实际上我当前的数据文件只有一条数据)。看似依旧读取了原文件(/opt/prod.data),不管我如何调试,一直报这个错。这里的报错具有很强的欺骗性,导致我一直绕不出来。
3.没办法,尝试采用control的方式进行导入,竟然奇迹般的导入成功。
4.此时自我怀疑,是不是自己操作有问题。然而后续进行多轮测试,结果一样,直接采用参数导入不能正常读取修正后的正确的数据文件,导入失败。而采用control的方式,可以正常导入成功。
5.最终经达梦原厂指点,很尴尬,发现问题原因是我采用命令行导入时,应指定列分隔符FIELD_SEPERATOR为",",而不是行分割符ROW_SEPERATOR为","。使用正确命令后导入成功。
文章
阅读量
获赞