如何告诉sqlldr修剪尾随和前导空格

时间:2011-12-19 17:12:28

标签: removing-whitespace sql-loader

我正在使用sqlldr来加载其中某些字段具有尾随和前导空格的数据。有没有办法告诉sqlldr忽略这些空格,而不是说

field "trim(:field)"

2 个答案:

答案 0 :(得分:3)

field" trim(:field)"在大多数情况下工作正常,但我提出了典型的情况,其中列大小为char(1)但控制文件中的数据是' Ÿ'和"修剪(:字段)"无法加载数据。 经过大量的研究后我才知道trim()函数修剪数据中的空格,但同时将空值添加到数据中代替空格,因此上面例子中的数据长度为2,因为它计算空值在数据的左侧。因此,数据将类似于nullY,因为表中的列大小小于未加载的实际大小,oracle抛出错误消息。 为了克服这个问题,我使用了: "修剪(修剪(:字段)为空)"

上面的脚本首先修剪空格,然后再修剪sql-loader附加的空值。

我希望我提供的信息对任何面临问题的人都有所帮助。 我无法抗拒发布这个,因为我没有发现任何线程回答这类问题。

答案 1 :(得分:1)

我知道这是一个老话题,但无论如何我都会说话。

与许多事情一样,答案是“这取决于”。这取决于数据是固定格式还是分隔格式。如果分隔,则还取决于控制文件是否使用OPTIONALLY ENCLOSED BY子句。有关所有肮脏的详细信息,请参阅Oracle SQL * Loader文档。例如,请尝试以下链接:http://docs.oracle.com/cd/B28359_01/server.111/b28319/ldr_field_list.htm#i1007768