我必须通过 oracle 数据库中的 sql loader 加载数据。在控制文件 FIELDS TERMINATED BY¶
中提及。sql 加载程序无法将 pilcrow 识别为分隔符。
像这样的数据
HDR¶name¶Id
BDY¶rohan¶2
TRL¶1
我必须通过 oracle 数据库中的 sql loader 加载数据。在控制文件 FIELDS TERMINATED BY¶
中提及。sql 加载程序无法将 pilcrow 识别为分隔符。
像这样的数据
HDR¶name¶Id
BDY¶rohan¶2
TRL¶1
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
参考链接
请检查链接以获取有关字符集重要性的一些理解和参考。
试试这个:它可能会帮助你。
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
这个对我有用。