sql - 使用 import 命令在 db2 表中的非空列中添加空格

标签 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 不是 NULL 列。

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

这些内容位于 .dat 文件中,如下所示:

abc| | |def|pqr

现在,在导入上述行期间,这些空格被视为 NULL,因此尝试在目标表的非空列中插入空值时一切都会失败。

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

感谢您的阅读!

最佳答案

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

来自 IBM DB2 文档:

KEEPBLANKS - 保留 CHAR、VARCHAR、LONG VARCHAR 或 CLOB 类型的每个字段中的前导和尾随空白。如果没有此选项,所有不在字符定界符内的前导和尾随空白都将被删除,并且将 NULL 插入到所有空白字段的表中。

关于sql - 使用 import 命令在 db2 表中的非空列中添加空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14473295/

相关文章:

php - PDO 查询字符串

Unix (Solaris) 类型的 ls -l 输出,带有数字名称

c - 使用 openssl 在 stdout 上打印 RSA 加密文本

c++ - Assimp导入导出格式错误

ios - 当且仅当运行时到达代码块内部时才导入类

mysql - 如果数字不在另一个表的逗号分隔列表中,是否可以将行插入到表中?

java - 从内部联接更新 ResultSet 中的行

mysql - Convertint 毫秒至今

unix - 在 UNIX 中的 sed 命令中使用否定

Python从其他文件导入变量