【发布时间】:2019-05-10 14:59:41
【问题描述】:
我正在控制文件中加载以下数据,由于某种原因它跳过了第一个字符。
最初的问题是跳过第一个字符,加载第二个字符并忽略其余字符!但我使用TERMINATED BY '\n' 解决了这个问题。
我已经添加了UTF8 字符集(因为文件是 UTF-8 的,如 Notepad++ 所述),但无论有没有它,结果都是一样的。
我找不到与此相关的任何其他信息 - 最接近的答案是 CONTINUEIF 导致了此问题,但我没有使用它。也许 SQL*Loader 正在读取每条记录的第一个字符以获取其他内容?
这是表格和序列:
create table test_table
( id number, raw_data varchar2(100) )
/
create sequence test_seq
/
这里是控制文件和数据。序列位运行良好并按预期填充TEST_TABLE.ID 列。 TEST_DATA.RAW_DATA 列跳过每条记录的第一个字符(即 A、C、E 等)。
LOAD DATA
CHARACTERSET UTF8
INFILE *
TRUNCATE INTO TABLE test_table
(
id "TEST_SEQ.NEXTVAL",
raw_data TERMINATED BY '\n'
)
BEGINDATA
A123 B456
C789 D012
E345 F678
J901 K234
L567 M890
我希望这会将每一行加载到TEST_TABLE.RAW_DATA 列中。
相反,它会跳过每条记录的第一个字符并愉快地加载其余字符;即TEST_TABLE.RAW_DATA中的5条记录是:
123 B456
789 D012
345 F678
901 K234
567 M890
如何阻止它跳过第一个字符?
【问题讨论】:
标签: oracle sql-loader