shell - Unix 中的 Shell:带有元音变音数据的 db2 数据库未导出到 CSV
问题描述
我写了一个 .sh 文件,在这个 .sh 文件中我选择了一些导出 .csv 文件的数据。我认识到所有带有元音变音(ä、ö、ü 等)的行都不认为是导出的,其余数据都可以。所以我认为这可能是shell代码中的数据格式问题。我使用“UTF-8”对 .sh 文件进行编码。我的 db2 代码是这样的:
SELECT * FROM table WHERE something IN ('aktiviert', 'gekündigt','beendet')
我想“gekündigt”有问题。有人可以帮忙吗?非常感谢!
解决方案
在运行脚本的 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)端应用程序代码页。
推荐阅读
- python-3.x - 带有要作为数据框打开的列表列表的文本文件
- date - 查找今天日期的前一天和今天日期之后的日期
- javascript - 从模板字符串的末尾删除“,”逗号
- vuejs2 - 在 vue-cli 中将分钟转换为小时的全局函数
- javascript - Cytoscape.js - 查找所有公共节点并保留它们
- reactjs - 当某些为空时,React/Spring-boot 无法显示 @ManyToOne 关系
- boolean - 逻辑门求解与模拟
- javascript - 我无法在我的搜索字段中书写,但建议功能有效。我该如何解决?
- javascript - 检查Javascript后重定向不起作用
- c# - SDL2-CS GetKeyboardState IntPtr 到字节数组