【问题标题】:Sql loader: Loading .CSV files with embedded \r\n into oracleSql loader:将嵌入 \r\n 的 .CSV 文件加载到 oracle
【发布时间】:2018-05-19 20:08:22
【问题描述】:

我有一个 .csv 文件,其中某些列中的数据有一个或多个 \r\n。我需要在没有这些 \r\n 的情况下将它们加载到 oracle 中,但 SQLLDR 会出错。

以下是记录示例:

R1:

"A", "B", "
CDE
FGH" , ...

R2:

"A", "B", "
CDE

FGH" , ...

R3:

"A", "B", "C
DEF
GH" , ...

R4:

"A", "B", "C
DE" , ...

我用过

  • continueif last != '"' ,

  • “STR '\r\n'”和

  • 替换 (:ColumnName, chr(13) || chr(10), ' '),

    在控制文件中,但这些解决方案不起作用。那么,我该如何处理呢?

编辑:这是我的控制文件的标题:

OPTIONS (DIRECT=TRUE)
LOAD DATA
INFILE 'E:test.csv'
INTO TABLE TEMP
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'
...

【问题讨论】:

  • 谢谢,但我认为问题有所不同。
  • 在处理开始前使用dos2unix删除回车。
  • @KaushikNayak 记录也用 \r\n 分割。如果我删除它会发生什么? (字段之间和记录末尾的\r\n都被删除)
  • @DAVID_ROA,我发布的链接还描述了如何定义换行符,因此它IS与您的问题相关(或者我认为)。

标签: sql oracle sql-loader


【解决方案1】:

我找到了。 我应该使用:CONTINUEIF NEXT PRESERVE(1) != ' " ',因为记录以 ' " ' 开头,并且只要下一行与 ' " ' 相对,它们都算作一条记录。

【讨论】:

    猜你喜欢
    • 2019-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多