【MSSQL】执行大sql文件-内容乱码处理


MSSQL执行sql文件 ,文件小可以拷贝到查询窗口直接执行,

但文件过大如下图,文件已经有2G大小,使用普通编辑器都难以打开,vscode和EmEditor还是能打开的,若查看或编辑推荐用EmEditor处理;

 

 

大sql文件 使用查询窗口打开和执行时就十分困难了。

微软提供了Osql / sqlcmd  用cmd命令方式处理

SQL Server 2000版本之后可以使用 osql

SQL Server 2008版本之后可以使用osql 或sqlcmd


服务器编码为  936 简体GBK

 

 


osql的使用:
 格式:osql -U 用户 -P 密码 -S 服务器 -d 数据库名 -r -e -i "sql文件全路径" -o "输出内容到文件全路径"  
更多说明:
osql 实用工具 https://docs.microsoft.com/zh-cn/sql/tools/osql-utility?view=sql-server-ver15

如:osql -U sa -P 密码 -S . -d demo -r -e -i "E:\docs\sqlfile\ClientInfo.sql" -o "E:\docs\sqlfile\ClientInfo.txt"  

 sql脚本内容:

 

 但插入的结果却是乱码,如下图:

 

 

 

查阅"osql 乱码" 结果都是 改文件编码为:GB2312 试过多回均无效果,以及修改cmd字符集,依然无效;

执行  osql ?  命令出现乱码,如下图:

 

 

osql  的文件编码控制各位可以自行研究,osql乱码我没有处理成功;接下来选择sqlcmd 来处理

sqlcmd 实用工具

sqlcmd的使用:
 格式:sqlcmd -U 用户 -P 密码 -S 服务器 -d 数据库名 -r -e -i "sql文件全路径" -o "输出内容到文件全路径"   -f 编码号
更多说明:
sqlcmd 实用工具 https://docs.microsoft.com/zh-cn/sql/tools/sqlcmd-utility?view=sql-server-ver15

:sqlcmd -U sa -P 密码 -S . -d demo -r -e -i "E:\docs\sqlfile\ClientInfo.sql" -o "E:\docs\sqlfile\ClientInfo.txt"  -f 65001

我的文件是utf8的这里使用 65001

 

 

 

查询结果中文未有乱码,执行正确。

 

 

 

执行大sql文件还有其它 mssql工具 可实现,具体可以查阅 microsoft文档介绍:SQL 命令提示符实用工具  https://docs.microsoft.com/zh-cn/sql/tools/command-prompt-utility-reference-database-engine?view=sql-server-ver15

更多的用法需要各位自行研究了。

 

 



posted @ 2020-07-13 16:58  toiv  阅读(189)  评论(0编辑  收藏