SQL Loader无法正确地将CSV文件数据加载到Linux环境中

时间:2016-07-01 09:41:31

标签: linux oracle sql-loader

我能够正确地将相同的逗号分隔的csv文件的数据加载到窗口oracle数据库中但是在linux环境中,插入的记录具有奇怪的行为。例如,正在插入的数据具有类似\ n的行为。我选择了记录并将其粘贴,注意记录是这样的

"data
"

我使用的控制文件如下

Load DATA
REPLACE INTO TABLE TABLE_NM                             
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS

请告知我可以做些什么来使这个场景正确。提前谢谢你

2 个答案:

答案 0 :(得分:1)

它是经典的问题,其中* nix系统行以换行符结束,但在Windows行上以回车/换行结束。由于您的数据以回车/换行结束,因此在Windows上可以正常读取,但Linux会加载回车。

您可以预处理数据文件并使用dos2unix等实用程序替换行(记录)终止字符,也可以通过将STR子句添加到INFILE选项来更改控制文件将记录终止字符设置为回车符:

INFILE "test.dat" "STR x'0D'" 

我会选择通过dos2unix运行数据,以使控制文件更通用,而不是特定于数据文件名。

答案 1 :(得分:0)

经过调查,请注意问题的根本原因是源文件不是从Linux基础环境生成的。因此,在手动将文件转换为Linux版本后,Feed文件可以毫无问题地加载到DB中。