IIB:插入Oracle数据库“¿”(问号)和汉字

问题描述 投票:0回答:1

[我是Oracle数据库和IBM Integration Bus中的新手,我正在尝试在IBM Integration Bus中使用ESQL的INSERT INTO函数来插入CSV文件的数据。

我正在使用具有ISO-8859-1编码的DFDL来读取文件。使用调试器时,该消息很好,并且在SQLPLUS和SQL Developer中可读。

我已经尝试更改Oracle数据库中的NLS_CHARARCTERSET设置,尽管我不确定自己需要哪种编码。默认情况下为AL32UTF8,我尝试使用UTF8,WE8ISO8859P1。

我所做的就是更改DFDL的编码,并将ODBC驱动程序的设置更改为使用Oracle NLS设置(默认),使用Microsoft区域设置和使用美国设置。

如果我尝试使用INSERT INTO命令,数据库将返回倒置的问号或中文字符,这显然不是我想要的。

编辑:如果我对INSERT INTO值进行硬编码,它还会返回问号。 CSV的编码无关紧要。我还发现,CSV文件的数据显示为空。当我在INSERT INTO中对值进行硬编码时,会出现反问号。

oracle odbc ibm-integration-bus embedded-sql
1个回答
0
投票

如果您指的是CSV文件的编码。由于输入文件中的字符如“ß”],因此它是Windows 1250

我听不懂那句话。使用字符“ß”并不一定意味着Windows1250。对于该声明,您是否还有其他支持证据?

如果您的主张正确,则您的DFDL模式不正确。您不能使用单字节解码器解析多字节编码。因此,您应该做的第一件事是将DFDL模式的格式块中的'encoding'属性更改为“ 5346”(根据https://www.ibm.com/support/knowledgecenter/en/SSRH46_3.0.0_SWS/dni_ccsids_and_char_set_names.html)。

但是(对不起,我很抱歉重复一遍,但这确实很重要...)请检查您对Windows 1250的假设是否正确。然后,确保DFDL模式中的编码与CSV文件的编码匹配。

© www.soinside.com 2019 - 2024. All rights reserved.