Sam*_*Sam 5 sql-server csv batch-file
我正在寻找一种批量导出SQL Server表到csv文件的方法.
有一些使用sqlcmd或bcp的解决方案,但到目前为止,我找不到任何正确转义引号,逗号或换行符的解决方案.
例如,此命令创建一个不错的csv,但忽略了引号和逗号,这使得csv文件无法使用:
bcp MyDatabase..MyTable out c:\test.csv -c -T -t, -r\n -S MYPC
Run Code Online (Sandbox Code Playgroud)
从我的四行示例数据中,每行包含一些其他特殊字符,这将创建一个这样的文件:
1,contains " quote
2,contains , comma
3,contains ; semi
4,contains ' single quote
Run Code Online (Sandbox Code Playgroud)
由于引号和逗号,其他程序无法导入.当然,我可以改变分离器标签或管道符号,但是这不能解决真正的问题:无论分隔符是,如果它的数据存在,它会使导出文件不可用.
那么如何使用标准SQL工具(如BCP,sqlcmd或类似工具)批量导出批量数据到工作的csv文件?
我在Iain Elder的另一个 Stackoverflow 答案中找到了一个可以正确编码 csv 文件的解决方案:
他使用 PowerShell 导出正确的 csv:
Import-Module -Name SQLPS
$cd = Get-Location
Invoke-Sqlcmd -Query "SELECT * FROM DimDate;" `
-Database AdventureWorksDW2012 `
-Server localhost |
Export-Csv -NoTypeInformation `
-Path "$cd\DimDate.csv" `
-Encoding UTF8
Run Code Online (Sandbox Code Playgroud)
他的解决方案正确地编码了分隔符、换行符、引号,并且也适用于长内容。
我仍然觉得奇怪,没有其他导出似乎可以正确支持 csv。事情没那么复杂。
归档时间: |
|
查看次数: |
6799 次 |
最近记录: |