DB2安装在AIX上,我需要把DB2里面的数据导出到文件里面(如CSV),然后再发送到MySQL服务器上,通过load data进行导入。
这里就涉及到了编码问题,从DB2导出的文件,默认编码是ISO-8859-1,如果数据里有中文,那自然就是乱码。
问题奇怪奇怪在,如果你用vim 打开 ,然后以gbk的编码显示,
vim file.csv :e ++enc=gbk
中文是不乱码的,而且你转成utf-8也是没有用的(因为MySQL是UTF-8的),
iconv -f ISO-8859-1 -t UTF-8 file.csv -o file-utf-8.csv
其实可以把文件下载到本地,用编辑器手动转一下,但是有些文件过大,十几个G,这甚至编辑器打都打不开,所以必须另寻他路。
最后发现了一个很简单的方法,不对文件进行转码,而是在导入MySQL的时候指定编码为gbk即可
load data local infile 'file.csv' into talbe t_file_info character set gbk fields terminated by ',' enclosed by '"' lines terminated by 'n'
这样就解决了,使用这个命令导入还是挺快的,不过对于一些数据库分片的来说,速度可能会慢些。



