Stored procedures 使用DB2 SYSPROC.ADMIN\u CMD进行数据库导入时出现字符集问题

Stored procedures 使用DB2 SYSPROC.ADMIN\u CMD进行数据库导入时出现字符集问题,stored-procedures,jdbc,db2,Stored Procedures,Jdbc,Db2,我正在运行一个Java应用程序,它将需要导入的文件传输到DB2所在的服务器。然后Java应用程序创建与数据库的JDBC连接并运行: CALL SYSPROC.ADMIN_CMD('import from <filename> of del modified by decpt, coldel; messages on server inert into <view>') 调用SYSPROC.ADMIN\u CMD('import from of del modified

我正在运行一个Java应用程序,它将需要导入的文件传输到DB2所在的服务器。然后Java应用程序创建与数据库的JDBC连接并运行:

 CALL SYSPROC.ADMIN_CMD('import from <filename> of del modified by decpt, coldel; messages on server inert into <view>')
调用SYSPROC.ADMIN\u CMD('import from of del modified by decpt,coldel;服务器上的消息惰性导入')
我遇到的问题似乎与数据库用于导入文件的用户的数据库的字符集有关(使用admin\u cmd存储过程)。这个问题是: “乌姆劳特”,像ä,ö,ü一样,会被这个输入弄得一团糟。我以前遇到过这种问题,解决方法总是设置将数据导入de_de.iso88591的用户的LC_CTYPE

我已经排除了问题的根源: -将文件传输到数据库服务器。(在那之后Umlaute仍然可以) -JDBC连接(我只是通过sql命令插入了一行,而不是从文件中读取)

问题是我现在不知道用户DB2使用什么通过ADMIN\u CMD导入文件。我也不相信它会以某种方式连接到DB2设置,因为通过其他各种插入、加载方式。。。数据输入,一切正常

是的,我需要使用ADMIN\u CMD。DB2命令行工具是一个性能噩梦。

最好的方法(出于理智):

  • 将所有数据库创建为UTF-8
  • 确保所有操作系统区域设置都是UTF-8
  • 摆脱所有不以UTF-8方式处理数据的应用程序
  • 屠杀所有不遵守UTF-8的开发商和供应商。重复并冲洗,直到100%完成

  • 实际上,您可以使用DB2来创建和转换您的输入数据(import命令基本上将您的数据管道化到insert子句中,而insert子句总是这样处理的)。我提供的链接将概述基本原理,并提供一些命令供您尝试。此外,也有类似的情况。根据它,您可以尝试将环境变量db2codepage设置为与分隔的数据文件相对应,这应该会有所帮助。此外,IXF格式导出可能工作得更好,因为它们在每个文件中都附加了编码相关信息

    谢谢您的回复

    我最后通过添加一个

    MODIFIED BY CODEPAGE=1252 
    
    到我的JDBC-ADMIN\u CMD导入命令。这似乎覆盖了db以前使用的任何代码页设置。数据库的默认代码页似乎也无关紧要,因为它被设置为1252。我现在唯一能想到的原因可能是DB2在通过ADMIN\u CMD导入时使用的linux设置