sql-server - 使用 SQLCMD.EXE 导出 CSV 数据

标签 sql-server csv sqlcmd

我正在尝试将数据从 SQL Server 导出为 CSV 格式。我有一个定期运行的 bat 任务来执行此操作。命令是:

SQLCMD.EXE -d [db details] -i c:\export.sql -o c:\export.csv -s"," -W 

SQL 文件只是 View 中的 SELECT *。

此方法有效,只是某些行在数据中包含逗号,因此需要用引号引起来的值。我可以将列分隔符更改为“','”,但随后我还需要 SQL Server 转义数据中的单引号。

不幸的是,将分隔符更改为另一个字符不太可能在 100% 的情况下解决问题,因为其中一个字段包含来自另一个应用程序的序列化数据,其中包含各种奇怪而奇妙的字符。

有什么方法可以让我获得标准的、引用的 CSV 数据吗?

最佳答案

您应该能够修改 SELECT 语句以使用 QUOTENAME功能。当然,您必须单独列出所有列,而不是使用 SELECT *

注意:在屏幕上可能很难阅读,但 QUOTENAME 的第二个参数是:

{单引号} {双引号} {单引号}

SELECT QUOTENAME(Column1, '"'), QUOTENAME(Column2, '"')
    FROM YourView

关于sql-server - 使用 SQLCMD.EXE 导出 CSV 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3891871/

相关文章:

sql - 在 %systemroot%\system32\drivers\etc\hosts 文件中包含端口号

SQL 十进制值作为整数插入

sql - 如何在Powershell脚本传入的SQL脚本中使用变量

sql-server - 如何使用 sqlcmd.exe 调用带有参数的存储过程?

c# - c#执行完后关闭sqlcmd

php - 如何从我的 WAMP 环境迁移到使用 MSSQL?

sql - 如何将 yyyymm 转换为 Mon-yyyy?

python - 如何在Python多处理中使进程休眠而不使其他进程休眠

powershell - 如何在 PowerShell 中根据列的值拆分 CSV?

在C中比较两个数据文件的int值