使用import命令在db2表中的非空列中的空格

时间:2013-01-23 05:51:55

标签: sql unix import db2

我在两个具有相同结构的不同数据库中有两个表。

我将一个表导出到.dat文件中,然后使用db2 import命令将其导入到其他表中:

import from $TEMP_DIR/TO_IMPORT.dat of del modified by dateformat=\"YYYY-MM-DD\" timeformat=\"HH:MM:SS\" timestampformat=\"YYYY-MM-DD HH:MM:SS.UUU\" chardel0x01 coldel|  COMMITCOUNT 1000 messages $LOG_DIR/to_import.log insert into MY_SCHEMA.MY_TABLE

TO_IMPORT.dat中的一行如下:

col1_val|col2_val|col3_val|col4_val|col5_val

分隔符是' |'

col1,col2,col3在源表和目标表中是非空列。

但是,在源表中,在某些行中,col2和col3中包含空格而不是字符值。

这些来自.dat文件,如下所示:

abc| | |def|pqr

现在,在导入上面的行期间,这些空格被认为是NULL,因此在尝试在目标表的非空列中插入空值时,everthing失败。

此问题的解决方案/解决方法是什么?

感谢阅读!

1 个答案:

答案 0 :(得分:3)

您可以使用选项KEEPBLANKS,它不会将空格视为NULL。

来自IBM DB2文档:

KEEPBLANKS - 保留CHAR,VARCHAR,LONG VARCHAR或CLOB类型的每个字段中的前导和尾随空白。如果没有此选项,将删除不在字符分隔符内的所有前导和拖尾空白,并将 a NULL插入到表中以显示所有空白字段。