我有一个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
)
答案 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的两种方法。
LOAD DATA INFILE '{path}\CSVfile.txt'
INSERT INTO test<br>
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(id CHAR,
name CHAR
)
"abcd",""
LOAD DATA INFILE '{path}\CSVfile.txt'
INSERT INTO test<br>
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(id CHAR,
name CHAR
)