如何创建处理包含断行的文本文件的SQLLDR控制文件?

问题描述 投票:0回答:1

例如,包含要加载的数据的文本文件可能看起来像这样:

$ cat employee.txt
100,Thomas,Sales,5000
200,Jason,Technology,5500
300,Mayla,
Technology,7000
400,Nisha,Marketing,9500
500,Randy,Technology,
6000
501,Ritu,Accounting,5400

您会看到某些行在错误的位置包含换行符。结果,尝试运行SQL加载程序时收到错误消息。

因此,我想知道是否可以将任何参数添加到可以处理此类混乱数据文件的负载或控制文件中。我在考虑是否可以计算文本文件中的第n个逗号以确定下一行何时开始。

oracle sql-loader
1个回答
0
投票

一种方法是定义不同的记录分隔符,然后将分隔符附加到输入文件的每个“行”的末尾。类似于:

sqlldr.ctl:

LOAD DATA
CHARACTERSET UTF8
INFILE employee.txt "str ' 0X1E\n'"
TRUNCATE INTO TABLE <table name>
TRAILING NULLCOLS
(
    ...
)

employee.txt:

100,Thomas,Sales,5000 0X1E
200,Jason,Technology,5500 0X1E
300,Mayla,
Technology,7000 0X1E
400,Nisha,Marketing,9500 0X1E
500,Randy,Technology,
6000 0X1E
501,Ritu,Accounting,5400 0X1E

请注意,在此示例中,'0X1E'是文本字符串,而不是十六进制值0X1E(ASCII记录分隔符),我永远无法正常工作...

© www.soinside.com 2019 - 2024. All rights reserved.