SQLCMD:我们可以在输出文件中加上双引号吗?
SQLCMD : Can we put double quotation mark to output file ?
请问有什么方法可以在SQLCMD,SQLServer 2016导出的输出文件的每一列都加上双引号""如下?
ex.
"TEST1", "TEST2", "TEST3"
"TEST1", "TEST2", "TEST3"
我们想通过 S3 存储桶为 AWS Redshift 导出文件。
如果SQLCMD没有合适的选项,也许我们最好验证一下Invoke-Sqlcmd,PowerShell。
如果您有更好更简单的方法,欢迎您的指教。
谢谢。
我认为你必须使用 QUOTENAME
函数,因为 sql server 中的双引号仅表示列名
SELECT QUOTENAME(TEST1, '"'), QUOTENAME(TEST2, '"'), QUOTENAME(TEST3, '"')
FROM t
就F.Y.I.,最后我选择了PowerShell作为这个目标。
Invoke-Sqlcmd -Query $StrQry -ServerInstance $StrSvrName -IgnoreProviderContext | Export-Csv -path $StrExpFile -Encoding UTF8
每个输出文件列都按照我的期望用“”双引号引起来。
输出文件包含额外的行,所以我在上传到 S3 存储桶时通过 AWS 复制命令选项 'IGNOREHEADER 2' 跳过它们。
谢谢。
对于下一个试图解决这个问题的人来说。我需要从 XP_CMDSHELL 调用一个批处理文件,它调用了 SQLCMD,它从一个文件中调用了一个 SQL 查询。为什么?因为查询在列名周围有双引号,是动态生成的,所以字段中的逗号数据不会干扰 SQLCMD 的 CSV 导出过程。 (逗号分隔)。就像为带引号的标识符添加 -I 一样简单。然后,您可以将双引号查询嵌入到字符串中或继续从文件中获取它。
简单测试:
批处理文件:
sqlcmd -E -S PGCDWDEV02 -d ANALYTICS -I -i D:\extractH\sqlquery.sql -o D:\output.txt
sql 文件:
SELECT "TABLE_NAME" FROM INFORMATION_SCHEMA.TABLES
实盘合计:
DECLARE @SQLCMD VARCHAR(4000);
SET @SQLCMD
= 'sqlcmd -S ' + @@SERVERNAME + ' -d ' + @db_name + ' -E -I -i ' +
@queryFile + ' -o "' + @root_path + ''
+ @object_name + '.csv" -W -w 10000 -s","';
请问有什么方法可以在SQLCMD,SQLServer 2016导出的输出文件的每一列都加上双引号""如下?
ex.
"TEST1", "TEST2", "TEST3"
"TEST1", "TEST2", "TEST3"
我们想通过 S3 存储桶为 AWS Redshift 导出文件。
如果SQLCMD没有合适的选项,也许我们最好验证一下Invoke-Sqlcmd,PowerShell。 如果您有更好更简单的方法,欢迎您的指教。
谢谢。
我认为你必须使用 QUOTENAME
函数,因为 sql server 中的双引号仅表示列名
SELECT QUOTENAME(TEST1, '"'), QUOTENAME(TEST2, '"'), QUOTENAME(TEST3, '"')
FROM t
就F.Y.I.,最后我选择了PowerShell作为这个目标。
Invoke-Sqlcmd -Query $StrQry -ServerInstance $StrSvrName -IgnoreProviderContext | Export-Csv -path $StrExpFile -Encoding UTF8
每个输出文件列都按照我的期望用“”双引号引起来。
输出文件包含额外的行,所以我在上传到 S3 存储桶时通过 AWS 复制命令选项 'IGNOREHEADER 2' 跳过它们。
谢谢。
对于下一个试图解决这个问题的人来说。我需要从 XP_CMDSHELL 调用一个批处理文件,它调用了 SQLCMD,它从一个文件中调用了一个 SQL 查询。为什么?因为查询在列名周围有双引号,是动态生成的,所以字段中的逗号数据不会干扰 SQLCMD 的 CSV 导出过程。 (逗号分隔)。就像为带引号的标识符添加 -I 一样简单。然后,您可以将双引号查询嵌入到字符串中或继续从文件中获取它。
简单测试:
批处理文件:
sqlcmd -E -S PGCDWDEV02 -d ANALYTICS -I -i D:\extractH\sqlquery.sql -o D:\output.txt
sql 文件:
SELECT "TABLE_NAME" FROM INFORMATION_SCHEMA.TABLES
实盘合计:
DECLARE @SQLCMD VARCHAR(4000);
SET @SQLCMD
= 'sqlcmd -S ' + @@SERVERNAME + ' -d ' + @db_name + ' -E -I -i ' +
@queryFile + ' -o "' + @root_path + ''
+ @object_name + '.csv" -W -w 10000 -s","';