IIB: INSERT INTO Oracle Database "¿"(倒问号)和汉字

IIB: INSERT INTO Oracle Database "¿" (inverted question marks) and chinese characters

我是 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命令 returns 倒问号或汉字,这显然不是我想要的。

编辑: 如果我对 INSERT INTO 值进行硬编码,它也会 returns 问号。 CSV 的编码无关紧要。我还发现 CSV 文件的数据显示为空。当我对 INSERT INTO 中的值进行硬编码时,我得到了倒置的问号。

If you mean the encoding of the CSV file. It is Windows 1250 since the input file has characters like 'ß'

我不明白那个说法。使用字符“ß”并不一定意味着 Windows 1250。您是否有任何其他支持该说法的证据?

如果您的声明是正确的,那么您的 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 文件的编码匹配。

它是 IIB ODBC Driver for Oracle 中的一个简单选项。只需确保选中高级选项卡中的“启用 SQL 描述参数”即可。