sql loader控制文件有FIELDS TERMINATEDBY¶(Pilcrow)

时间:2017-12-21 18:26:23

标签: oracle sql-loader controlfile

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

数据

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

2 个答案:

答案 0 :(得分:0)

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

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

它对我有用。

答案 1 :(得分:0)

S_Sauden给出的例子也适合我。

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

Fields terminated by X'C2B6'

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

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

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

 file -i datafile

上述命令适用于linux以获取字符集[编码]。您可以在ctl的{​​{1}}文件中使用以下信息:

sqlldr

重要的是同步DB,File,Loader的字符集,以确保您不会丢失任何翻译数据。

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

load data
CHARACTERSET UTF8
infile 

此外,您应该确保您的OS环境具有正确的NLS_LANG环境变量集。如果没有设置,那么请做必要的。您可以使用下面的参考链接获取相同的完整指南。

SELECT * FROM V$NLS_PARAMETERS

参考Link

请查看链接以获得一些理解&参考importance of characterset