首页 > 解决方案 > Unix 中的 Shell:带有元音变音数据的 db2 数据库未导出到 CSV

问题描述

我写了一个 .sh 文件,在这个 .sh 文件中我选择了一些导出 .csv 文件的数据。我认识到所有带有元音变音(ä、ö、ü 等)的行都不认为是导出的,其余数据都可以。所以我认为这可能是shell代码中的数据格式问题。我使用“UTF-8”对 .sh 文件进行编码。我的 db2 代码是这样的:

SELECT * FROM table WHERE something IN ('aktiviert', 'gekündigt','beendet')

我想“gekündigt”有问题。有人可以帮忙吗?非常感谢!

标签: shelldb2

解决方案


在运行脚本的 shell 会话中,您需要将 LANG 变量的值设置为正确的语言环境以匹配您的数据(并且该语言环境必须安装在您的操作系统中)。

您可以在运行db2 export命令之前设置此变量。您可以在您的 shell 启动配置文件中设置该变量,或者在您的userprofile(Db2 实例中,如果您有的话)或您的脚本中设置该变量,只要您使该变量可导出到子 shell。

通常,有一个系统默认语言环境并安排每个 shell 登录会话自动具有正确的 LANG 设置是很方便的。

例如export LANG=de_DE.utf8,如果您的领土是德语,并且安装了该语言环境,并且您的 shell 是 bash 或类似的。如果您的领土是瑞士或奥地利,或其他领土,请查看您的locale输出以找到最佳匹配。

如果您的客户端操作系统是 MS-Windows,则根据 MS-Windows 的区域设置应用不同的配置,尽管在某些情况下为 UTF-8 设置 DB2CODEPAGE=1208 环境变量会有所帮助。

请记住,db2命令行的 EXPORT 命令还支持modified by codepage=x 其中 x 是代码页编号的语法,这也可以提供帮助。请参阅文档。目的是在导出期间发生零代码页转换(它可能导致导出内容中的数据问题和可能的数据丢失),或者代码页转换在数据库代码页和客户端之间找到正确的匹配/等效字符(即你db2的shell脚本中的CLP)端应用程序代码页。


推荐阅读