我正在尝试使用SQL * Loader加载带货币符号的csv文件。符号'£'被'#'替换,符号'€'被NULL替换。
不确定我是否应该调整控制文件中的某些设置?
以下是NLS_DATABASE_PARAMETERS的值:
NLS_NCHAR_CHARACTERSET = AL16UTF16 NLS_CHARACTERSET = AL32UTF8
任何指针都会有很大的帮助。
csv文件的摘录 -
id,currency
1234,£
5678,€
货币列的数据类型为NVARCHAR2(10)。
这是ctl文件 -
OPTIONS(skip=1)
LOAD DATA
TRUNCATE
INTO TABLE schema_name.table_name
FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
filler1 filler,
filler2 filler,
Id INTEGER EXTERNAL,
Currency CHAR "TRIM(:Currency)"
)
答案 0 :(得分:1)
我猜这是一个字符集问题。
您是否将sqlloader文件的字符集设置为UTF8?
CHARACTERSET UTF8
另外,文件本身是UTF8编码的吗?
答案 1 :(得分:1)
感谢贾斯汀和帕特里克的指针!
该文件不是UTF-8编码的。我将文件转换为UTF-8编码,它工作正常!
对于那些不知道如何使用Notepad ++转换文件编码的人(像我一样,我刚刚学会了如何操作): 在Notepad ++中创建一个新文件 - >转到编码 - >以UTF-8编码 - >复制粘贴内容 - >将文件另存为.csv