【问题标题】:sql loader control file has FIELDS TERMINATED BY ¶ (Pilcrow)sql loader 控制文件有 FIELDS TERMINATED BY ¶ (Pilcrow)
【发布时间】:2017-12-21 18:26:23
【问题描述】:

我必须通过 oracle 数据库中的 sql loader 加载数据。在控制文件中 由 提及终止的字段。 sql loader 无法将 pilcrow 识别为分隔符。

数据喜欢

HDR¶name¶Id
BDY¶rohan¶2
TRL¶1

【问题讨论】:

  • 所以改变分隔符?
  • 无法更改。你对 pilcrow 的字符集有什么想法吗
  • 不,老实说,我想不出你不能将分隔符更改为有意义的东西的原因
  • 其实是其他系统生成的数据文件。这不在我的控制范围内。
  • 您可以使用 tr 命令或 perl 将字符替换为常见的字符,例如“|”然后运行 ​​sql 加载器。 :unix.stackexchange.com/questions/201751/…

标签: oracle sql-loader controlfile


【解决方案1】:

试试这个:它可能对你有帮助。

Fields terminated by '¶' optionally enclosed by '"' 

演示: 首先,我创建了一个表

CREATE TABLE test_table1
(
 ID NUMBER,
 ENAME VARCHAR2(200),
 LNAME VARCHAR2(200)
 );

我已经创建了一个控制文件test.ctl

OPTIONS ( ROWS=5000)
LOAD DATA
INFILE *
BADFILE './test_table1.BAD'
DISCARDFILE './test_table.DSC'
APPEND INTO TABLE test_table1
Fields terminated by '¶' optionally enclosed by '"'
trailing nullcols
(
  ID,
  ENAME,
  LNAME       
)BEGINDATA
1¶A¶B
2¶C¶D

从命令提示符运行:

sqlldr control = 'test.ctl' userid = username/password

它对我有用。

【讨论】:

    【解决方案2】:

    S_Sauden 给出的例子也适用于我..

    首先尝试在 ctl 文件中使用十六进制值:

    Fields terminated by X'C2B6'
    

    您可以使用以下查询查找 hex_value 以供参考:

    select rawtohex( utl_raw.cast_to_raw( '¶' ) ) from dual;
    

    如果上述想法对您不起作用,那么您可以检查您尝试上传的文件的编码:

     file -i datafile
    

    以上命令适用于linux 以获取字符集[编码]。您可以在ctl 文件中为sqlldr 使用以下信息:

    load data
    CHARACTERSET UTF8
    infile 
    

    同步 DB、File、Loader 的字符集很重要,以确保您在翻译过程中不会丢失任何数据。

    以下查询为您提供有关您的 Oracle 数据库环境的信息:

    SELECT * FROM V$NLS_PARAMETERS
    

    您还应确保您的操作系统环境设置了正确的 NLS_LANG 环境变量。如果没有设置,那么请做必要的事情。您可以使用下面的参考链接获取完整指南。

    export NLS_LANG=[NLS_LANGUAGE]_[NLS_TERRITORY].[NLS_CHARACTERSET]
    For example: American_America.UTF8
    

    参考Link

    请查看importance of characterset上的链接以获得一些理解和参考。

    【讨论】:

    • 实际上我在 Linux 环境中观察到的情况¶ 在控制文件中运行良好,但在 Windows 环境中,它无法正常工作,所以我将其作为参考阅读 - > asktom.oracle.com/pls/apex/…。然后我给了 export NLS_LANG=American_America.UTF8 和控制文件字符集 WE8ISO8859P1。
    猜你喜欢
    • 2021-03-24
    • 2017-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多