我确实有一个没有固定结构的平面文件,比如
name,phone_num,Address
bob,8888,2nd main,5th floor,avenue road
此处最后一列Address
的值为2nd main,5th floor,avenue road
,但由于相同的分隔符,
用于分隔列,因此我无法获得如何处理相同的线索。
平面文件的结构可能会因文件而异。
如何使用Informatica or SQL * Loader or UTL Files
我将无法访问平面文件,只是我应该从中读取数据,但我无法在平面文件中编辑数据。
答案 0 :(得分:5)
使用SQLLoader
load data
append
into table schema.table
fields terminated by '~'
trailing nullcols
(
line BOUNDFILLER,
name "regexp_substr(:line, '^[^,]+')",
phone_num "regexp_substr(:line, '[^,]+', 1, 2)",
Address "regexp_replace(:line, '^.*?,.*?,')"
)
答案 1 :(得分:0)
您需要更改源文件以将字段括在转义字符中,例如:
name,phone_num,Address
bob,8888,^2nd main,5th floor,avenue road^
然后在sql-loader中放置:
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^'
只选择一个通常不会出现在数据中的分隔符。
答案 2 :(得分:0)
如果您可以将源数据包含在双引号(或任何引号)中,您可以在从Flat文件中读取时使用Informatica中的“可选引号”选项