Sybase Bcp导数据乱码

1 问题描述

    由于工作中使用的是Sybase,所以有时候需要将csv这种格式的文件通过BCP命令导入到临时表中,并结合之前的SQL逻辑跑数据,整个过程都是CRON来执行。但是最近却发现,CRON跑出的文件大小都是0,最后定位发现是在BCP导入数据的时候,临时表中第一行数据的第一个字段总是有乱码,而且乱码是鍩縡cp,如下图所示。
Sybase Bcp导数据乱码

2 问题原因

    如果在确定之前的BCP命令是正常得情况下,这是由于源文件有中文乱码导致

3 解决办法

3.1 搜索中文字符

    如果是小文件,直接肉眼或者通过notepad++工具把所有字符打开,查看是否有不需要的中文字符在里面

    如果是大文件,由于打开所有字符,也无法肉眼直接看到,这个时候可以直接用notepad++工具的查找中的正则表达式进行匹配,[\x{4e00}-\x{9fa5}] 如下图所示。
Sybase Bcp导数据乱码

3.2 转换文件编码格式(我的问题是这个方法解决)

    如果文件已经在上面的步骤之后BCP导入还是有乱码,则可以改变文件中编码格式,将文件中的格式改成需要的,如将UTF-8改成ANSI。具体操作如下
Sybase Bcp导数据乱码

3.3 注意

    在转换文件的编码格式的遇到过UTF-8转换成ANSI表面上成功,但在此打开还是UTF-8文件。搜索了相关的博客说是里面还是有中文字符,需要继续处理。

3.4 参考链接

参考链接 northmelon.top