Sqlcmd导入数据脚本乱码解决方法

这类问题主要针对不同机器上数据交互出现,可能会出现由于脚本文件过大(文件>100MB以上),记事本/查询分析器都无法打开,只能用命令行导入


特定环境下造成乱码时,可尝试以下解决方法


A服务器-->生成单表数据脚本(文件>100MB以上)-->在B服务器导入

容易出错通常是由于数据文件格式没有N''

Sqlcmd导入数据脚本乱码解决方法_第1张图片

1、模拟在A服务器生成脚本方法

操作步骤:

Step1、在导入数据库—右健—任务—生成脚本

Sqlcmd导入数据脚本乱码解决方法_第2张图片

Step2、选中导出对象表

Sqlcmd导入数据脚本乱码解决方法_第3张图片

Step3、指定新建查询窗口和选中高级

Sqlcmd导入数据脚本乱码解决方法_第4张图片

Step4、在选中—高级—选中仅限数据、指定数据库(FALSE)选项

Sqlcmd导入数据脚本乱码解决方法_第5张图片

Sqlcmd导入数据脚本乱码解决方法_第6张图片

Step5、查看路径上生成文件格式(注:对方生成格式有没有N''),在SQL2014环境(varchar/nvarchar)都有加上


Sqlcmd导入数据脚本乱码解决方法_第7张图片

保存文件时设置为Unicode编码的脚本文件(注意代码页数字65001

Sqlcmd导入数据脚本乱码解决方法_第8张图片

2、在B服务器导入
Step1、开始—运行—cmd

Step2、在命令输入

sqlcmd -E -S "实例名"  -d 数据库名  -u  -i "D:\script.sql"


导入后显示中文显示乱码


--解决方法:

加命令-f 65001

命令说明:

Input/Output Options

-fcodepage | i:codepage[ ,o:codepage] | o:codepage[ ,i:codepage] 

指定输入和输出代码页。
代码页页码是指定已安装的 Windows 代码页的数值。


代码页转换规则:


如果未指定代码页, sqlcmd 会将当前代码页同时用于输入文件和输出文件,除非输入文件为 Unicode 文件,在此情况下无需进行转换。 


sqlcmd 自动识别 Big-endian Unicode 和 Little-endian Unicode 输入文件。 
如果已指定 -u 选项,输出将始终为 Little-endian Unicode。 


如果未指定输出文件,输出代码页将为控制台代码页。
这将使输出正确显示在控制台上。


假定多个输入文件具有相同的代码页。
可以将 Unicode 和非 Unicode 输入文件混合在一起。


在命令提示符处输入 chcp 以验证 Cmd.exe 的代码页。 



--命令行运行
sqlcmd -E -S "实例名"  -d 数据库名 -f 65001  -i "D:\script.sql"



可以chcp验证代码页

如:

Sqlcmd导入数据脚本乱码解决方法_第9张图片


你可能感兴趣的:(SQL,Server管理维护,SQL,Server经验分享)