暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 使用sqlldr替换字符串中的反斜杠和双引号

askTom 2017-05-22
1516

问题描述

嗨,汤姆。
我需要你的帮助。

我正在尝试使用sqlldr将数据加载到Oracle 11g数据库中。

我的数据有一个列,有时如下所示:

,"\" 台湾移动 \ "",

我的ctl有:
由 “,” 终止的字段
可选地由 '“'

我已经尝试了许多类型的replace和regexp_replace,我继续没有解决方案。

我的替换在SQL Developer中工作正常,但在SQLLDR中不起作用。

与replace和regexp_replace一起使用的替换示例:

,列 “替换 (: 列,'\"')”
,列 “替换 (: 列,'\"')”
,列 “替换 (: 列,'\"')”
,列 “替换 (: 列,'"')”

无论如何,我在此列的错误文件中出现错误!
你能帮我吗?

专家解答

我会用一张外部表

SQL> CREATE TABLE t (
  2    x      VARCHAR2(50)
  3  )
  4  ORGANIZATION EXTERNAL (
  5    TYPE ORACLE_LOADER
  6    DEFAULT DIRECTORY temp
  7    ACCESS PARAMETERS (
  8      RECORDS DELIMITED BY NEWLINE
  9      FIELDS TERMINATED BY ','
 10      MISSING FIELD VALUES ARE NULL
 11      (
 12        x CHAR(50)
 13      )
 14    )
 15    LOCATION ('t.dat')
 16  );

Table created.

SQL>
SQL>
SQL> select * from t;

X
--------------------------------------------------
"\"Taiwan Mobile\""

SQL>
SQL> select replace(trim('"' from replace(x,'\"',chr(0) )),chr(0),'"')
  2  from t;

REPLACE(TRIM('"'FROMREPLACE(X,'\"',CHR(0))),CHR(0)
--------------------------------------------------
"Taiwan Mobile"


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论