csv 文件在第一列和最后一列没有结束行和“

6ljaweal  于 2023-01-10  发布在  其他
关注(0)|答案(2)|浏览(144)

我试图通过使用微软SQL Server中的bcp命令导出csv文件中的表。
下表为样本数据

Table name : XYZ
col1      col2      col3
abcd,inc. USD,inc   1234
pqrs,inc  USD,inc   6789
stuv,inc  USD,inc   0009

列值中有逗号,如上所示。
我已经写了.fmt文件如下:

test.fmt

13.0 
3  
1 SQLCHAR 0 4000 "\",\"" 1  col1 SQL_Latin1_General_CP1_CI_AS 
2 SQLCHAR 0 4000 "\",\"" 2  col2 SQL_Latin1_General_CP1_CI_AS 
3 SQLCHAR 0 4000 "\r\n" 3   col3 SQL_Latin1_General_CP1_CI_AS

下面是我正在使用的命令:

DECLARE 
@V_BCP_QUERY VARCHAR(4000),
@V_BCP_OUTPUT_FILE VARCHAR(1500),
@V_BCP_FORMAT_FILE VARCHAR(1500),
@V_BCP_COMMAND VARCHAR(4000)
begin

SET @V_BCP_QUERY='"SELECT col1,col2,col3 FROM TABS..XYZ"'

SET @V_BCP_OUTPUT_FILE='"D:\OUTPUT.csv"'

SET @V_BCP_FORMAT_FILE='"D:\test.fmt"'

SET @V_BCP_COMMAND='bcp '+@V_BCP_QUERY+' queryout '+@V_BCP_OUTPUT_FILE+' -f '+@V_BCP_FORMAT_FILE+' -T -S "DEV-CR"'

EXECUTE Master.dbo.xp_CmdShell  @V_BCP_COMMAND

end

我在OUTPUT.csv文件中获得以下数据:

abcd,inc.","USD,inc","1234
pqrs,inc","USD,inc","6789
stuv,inc","USD,inc","0009

没有“在开始的行和结束的行。而且当我打开这个在excel然后所有的行来在一行
我的要求是以csv文件导出文件。
好心帮忙

v2g6jxz6

v2g6jxz61#

你可以一起破解一个解决方案--但是从长远来看,使用正确的工具来完成这项工作会更容易、更好。
不要使用BCP输出单个列,而是创建一个使用所需结果格式化的列:

SELECT quotename(concat_ws(',', quotename(col1, char(34)), quotename(col2, char(34)), quotename(col3, char(34)), char(34)) 
  FROM yourTable

这将在输出中为您提供一个单列-整个字符串用双引号括起来,每列用双引号括起来,并用'.'分隔符连接。

kse8i1jr

kse8i1jr2#

当然,这是丑陋的,但它的简单,快速和得到它的完成。

SELECT '"' + col1 + '",' +
        '"' + col2 + '",' +
        '"' + col3 + '"'
FROM Table

相关问题