Unix中的Shell:db2数据库,其中包含未导出为CSV的umlaut数据

Unix中的Shell:db2数据库,其中包含未导出为CSV的umlaut数据,shell,db2,Shell,Db2,我写了一个.sh文件,在这个.sh文件中,我选择了一些数据,这些数据导出了一个.csv文件。 我认识到所有带有umlaut的行(ä、ö、ü等)都不被认为是导出的,其余的数据都可以。所以我认为这可能是shell代码中的数据格式问题。 我使用“UTF-8”对.sh文件进行编码。 我的db2代码是这样的: SELECT * FROM table WHERE something IN ('aktiviert', 'gekündigt','beendet') 我想“gekündigt”有点不对劲。有人能

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

SELECT * FROM table WHERE something IN ('aktiviert', 'gekündigt','beendet')
我想“gekündigt”有点不对劲。有人能帮忙吗?
非常感谢

在运行脚本的shell会话中,需要将LANG变量的值设置为与数据匹配的正确区域设置(该区域设置必须安装在操作系统中)

可以在运行
db2export
命令之前设置此变量。您可以在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是一个代码页编号,这也有帮助。请参阅。其目的是在导出过程中发生零代码页转换(这可能导致导出内容中的数据问题和可能的数据丢失),或者代码页转换在数据库代码页和客户端之间找到正确的匹配/等效字符(即shell脚本中的
db2
CLP)应用程序代码页。

在运行脚本的shell会话中,需要将LANG变量的值设置为与数据匹配的正确区域设置(该区域设置必须安装在操作系统中)。你做到了吗?例如,
export LANG=de_de.utf8
如果您的地区是德国,并且安装了该语言环境,如果您的shell是bash或类似的语言环境。