版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/roy_88/article/details/52595854
这类问题主要针对不同机器上数据交互出现,可能会出现由于脚本文件过大(文件>100MB以上),记事本/查询分析器都无法打开,只能用命令行导入
特定环境下造成乱码时,可尝试以下解决方法
A服务器-->生成单表数据脚本(文件>100MB以上)-->在B服务器导入
容易出错通常是由于数据文件格式没有N''
1、模拟在A服务器生成脚本方法
操作步骤:
Step1、在导入数据库—右健—任务—生成脚本
Step2、选中导出对象表
Step3、指定新建查询窗口和选中高级
Step4、在选中—高级—选中仅限数据、指定数据库(FALSE)选项
Step5、查看路径上生成文件格式(注:对方生成格式有没有N''),在SQL2014环境(varchar/nvarchar)都有加上N
保存文件时设置为Unicode编码的脚本文件(注意代码页数字65001)
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"
如: