【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
更多的用法需要各位自行研究了。