告诉sqlldr控制文件将缺失值加载为NULL

时间:2016-04-17 17:21:24

标签: csv sql-loader

我有一个CSV文件。如何告诉sqlldr控制文件将缺失值加载为NULL。 (即表模式允许某些列为NULL)

CSV示例

1,Name1
2,Name2
3,
4,Name3

你能帮我在这里编辑我的控制文件,以便第3行,缺少的值在我的表格中作为NULL插入

Create table test
( id Number(2), name Varchar(10), primary key (id) );

控制文件

LOAD DATA INFILE '{path}\CSVfile.txt'
INSERT INTO test
FIELDS TERMINATED BY ','
(id CHAR,
 name CHAR
)

3 个答案:

答案 0 :(得分:2)

我相信你应该做的就是:

name  CHAR(10) NULLIF(name=BLANKS)

答案 1 :(得分:1)

我发现使用 TRAILING NULLCOLS 可以完成这项工作,但必须是"空白"在记录行的末尾。

LOAD DATA INFILE {path}\Your_File
INSERT INTO TABLE Your_Table
TRAILING NULLCOLS
FIELDS TERMINATED BY ","
(
 ... your fields
)

答案 2 :(得分:-1)

您必须向SQL * Loader提示您的数据中可能存在空值。

将该提示提供给SQL * Loader的两种方法。

  • 使用 TRAILING NULLCOLS 选项。
LOAD DATA INFILE '{path}\CSVfile.txt'
INSERT INTO test<br>
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(id CHAR,
 name CHAR
)
  • 使用随附的字段重新创建CSV文件,然后使用 OPTIONALLY ENCLOSED BY&#39;&#39; ,这样可以让SQL * Loader清楚地看到数据中的空值(之间没有任何内容)引号)看起来像"abcd",""
LOAD DATA INFILE '{path}\CSVfile.txt'
INSERT INTO test<br>
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(id CHAR,
 name CHAR
)