我有一个创建表 ext_file (....) 类型的 oracle_loader 查询,它打开一个文本文件以从中提取数据。访问参数是:
records delimited by newline
fields terminated by '\t'
optionally enclosed by '\"'
ltrim
missing fields are null
我刚刚注意到的问题是其中一个字段是高度,它存储在文本文件中为:
"5'6.35""
在没有转义的情况下使用 " inside a "-封闭字段会导致每条具有高度的记录都被踢出。
我怎样才能告诉 oracle_loader 接受这些值(我真的不在乎 " 是否进入或该字段是否被修剪为 5'6.35)。
我有两个解决方案,但都不是最佳解决方案: 1. 使用 sed 将 " 内的 " 转义为 \" 2. 省略可选的由 '\"' 括起来的行,这将断开字段终止符位于 a 内的行场地
解决方案是将包含的 by 子句移动到每一行而不是整个表。例如:
现在,那个讨厌的高度字段将在数据库中显示为“5'6.35””(其中包含三个双引号)。您可以对该列运行查询以删除引号。