关闭

TXT导入MSSQL 生僻字解决

1054人阅读 评论(0) 收藏 举报

TXT导入MSSQL 生僻字解决
 
一,基本情况
  txt文件导入到MSSQL的时候若碰到汉字后两位编码和字段分隔符编码相同时,导入结果在MSSQL中会后移一列
例如 “弢”,“ 韡 ” 十六进制编码分别是 8F7C 和ED7C 而字段分隔符号“|”编码是7C 因此在导入是会将汉字7C误认为|而结束一个字段


二,解决方案
  MSSQL提供多种文本导入的方法,目前只发现MSSQL的BCP.exe能够识别生僻汉字

  如下命令行:
  1)
bcp XYZJCG..ZJCG_JYXT_HSJK_HKGDXX in "c:/tmp/KHXX0518.TXT" -b1000 -c -t"|" -r"|"/n -S. -Usa -Psa
  2)
bcp XYZJCG..ZJCG_JYXT_HSJK_KHJBXX in "c:/tmp/KHXX0518.TXT" -b1000 -f c:/tmp/BCP_KHXX.txt -S. -Usa-Psa

  使用到的 bcp几个参数:
-f format_file
指定格式文件的完整路径,该格式文件包含以前在同一个表或视图上使用 bcp 时的存储响应。当使用由 format 选项所创建的格式文件大容量复制入或复制出数据时,使用此选项。格式文件的创建是可选的。在提示几个格式问题之后,bcp 将提示是否在格式文件中保存回答。默认文件名为 Bcp.fmt。大容量复制数据时,bcp 可引用一个格式文件,因此不必重新交互输入以前的回答。如果未使用此选项,也没有指定 –n、-c、-w、-6 或 -N,则 bcp 将提示输入格式信息。
      (注意-f参数和后面的模板文件有空格)
-c
使用字符数据类型执行大容量复制操作。此选项不提示输入每一字段;它使用 char 作为存储类型,不带前缀,/t(制表符)作为字段分隔符,/n(换行符)作为行终止符。
-t field_term
指定字段终止符。默认的字段终止符是 /t(制表符)。使用此参数替代默认字段终止符。
-r row_term
指定行终止符。默认的行终止符是 /n(换行符)。使用此参数替代默认行终止符。

 

  这两种方法均可以导入,但是发现当KHXX0518.TXT文件超过25M(估计)时候,使用第一种方法并不能解决上述问题,而第二种方法无此限制,可第二种方法依赖于模板BCP_KHXX.txt 。所以各有长短,使用看实际情况。
 
 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:133956次
    • 积分:2196
    • 等级:
    • 排名:第17214名
    • 原创:82篇
    • 转载:21篇
    • 译文:1篇
    • 评论:20条