SQL 加载程序无法将 CSV 文件数据正确加载到 linux 环境中

SQL Loader unable to load CSV file data into linux environment correctly

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

"data
"

我使用的控制文件如下

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

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

这是一个经典问题,在 *nix 系统上,行以换行符结尾,但在 Windows 中,行以回车符 return/linefeed 结尾。由于您的数据以回车 return/linefeed 结尾,因此在 Windows 上可以正常读取,但 Linux 加载回车 return.

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

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

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

调查后,请注意问题的根本原因是提要文件不是从 Linux 基础环境生成的。因此,在我手动将文件转换为 Linux 版本后,提要文件能够毫无问题地加载到数据库中。