问号"?“仅显示在要插入的第一行的第一个字段的前面。
有一次,我将ftp上传文件类型更改为text/ascii (而不是二进制),它似乎解决了问题。但后来它又回来了。服务器操作系统为aix5.3。
DataStage为7.5x2。
Oracle是11g。
我使用ue将文件保存为utf-8,使用unix结束标记。以前有人用过这玩意儿吗?
发布于 2013-02-06 12:19:49
问号本身没有多大意义,因为它可能只是数据库无法识别的某些特殊字符的“掩码”。您没有提供有关您的环境的任何细节,因此我在这里的观点只是猜测。我希望它能给你一点启发。
文本文件是如何创建的?如果它是在windows环境中创建的文件,你很可能会有像这样的字符,因为刹车线{CR}{LF}个字符。
oracle表的数据类型是什么?Char数据类型将根据字段的大小“填充”每个位置,在这种情况下,我建议使用varchar。
如果不是这样,我会在十六进制模式下编辑文件,并检查此特定字符的Ascii代码,然后使用修剪(如果是并行的)或转换(如果是服务器)来替换该字符。
convert函数如下所示:
Convert(字符(Ascii_char_number),'',your_string)
或者,如果作业是并行作业,则可以使用Trim函数
Trim(your_string,ascii_char_number,'L')
选项"L“将删除所有前导字符。您可能需要调整此函数以满足您的需要。如果您不熟悉TRIM函数,可以在datastage在线文档中找到更多详细信息。
在执行此操作时,我要给出的唯一警告是,您将从原始数据源中删除数据,因此在像这样操作文件时,请确保您没有删除任何有效信息,因为这不是ETL专家之间非常推荐的做法。
有任何问题,请叫我一声。如果我能帮上忙我很乐意。
干杯
发布于 2016-02-18 03:23:20
我也遇到过类似的问题,无法打印的字符显示为'?‘数据存储在处理这些记录时抛出警告。我可以不显示那些无法打印的字符,所以我使用了函数ICONV,它将这些字符转换为可打印的字符。有多个选项,我选择了将它们转换为‘’的选项。这对我很有效。下面的IBM页面中提供了更多详细信息:
http://docs.intersystems.com/ens201317/csp/docbook/DocBook.UI.Page.cls?KEY=RVBS_foconv
我使用的转换: ICONV(column_name,"MCP")
https://stackoverflow.com/questions/14493277
复制相似问题