Delimeter文件问题

时间:2013-03-25 10:25:39

标签: oracle sql-loader informatica-powercenter informatica utl-file

我确实有一个没有固定结构的平面文件,比如

 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

导入时处理此类平面文件

我将无法访问平面文件,只是我应该从中读取数据,但我无法在平面文件中编辑数据。

3 个答案:

答案 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中的“可选引号”选项