Delimeter文件问题

我有一个没有固定结构的平面文件

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)

2 years ago

使用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, '^.*?,.*?,')"
)

2 years ago

您需要更改源文件以将字段括在转义字符中,例如:

name,phone_num,Address
 bob,8888,^2nd main,5th floor,avenue road^

然后在sql-loader中你放了:

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '^'

只需选择一个通常不会出现在数据中的分隔符 .

2 years ago

如果您可以将源数据包含在双引号(或任何引号)中,则可以在从Flat文件中读取时使用Informatica中的“可选引号”选项