导出 XML
1 | bcp "select * from tableName FOR XML AUTO, ROOT('Root')" queryout C:/x.xml -S(local) -T -r -c |
-w
: 使用 UTF-16 编码,小端-c
: 使用 GBK 编码-c -C6501
: 使用 UTF-8 编码,但是有的计算机上不支持-T
: 本机使用-T
表示可信连接,如果是访问其他机器使用-U user -P pwd
输入用户名和密码
注意:
- 如果不使用
-r
,则导出的 XML 每行最多有 2033 个字符,会破坏 XML,用了-r
后就没有换行符了,整个 XML 的内容在同一行。- 内容中的 & 等特殊字符不会被转义就直接放到属性值里了,此时用 XML 库解析会出错。
导出 CSV
1 | sqlcmd -S localhost -d dbName -E -o "csvFile.csv" -Q "set nocount on; select * from tableName" -W -w 999 -s "," |
-W
: remove trailing spaces from each individual field-s","
: sets the column seperator to the comma (,)-w 999
: sets the row width to 999 chars(this will need to be as wide as the longest row or it will wrap to the next line)-U
: username-P
: password-h-1
: removes column name headers from the result- set nocount on: 输出时不显示 XXX 行受到影响的统计信息
注意:sqlcmd 导出为 CSV 文件时,如果列中有逗号,那么导出的 CSV 文件会被破坏,还没找到好办法。
参考 How to export data as CSV format from SQL Server using sqlcmd?