Sql server BCP单列中有多行的表

Sql server BCP单列中有多行的表,sql-server,bcp,Sql Server,Bcp,我需要BCP一个在一列中包含三行的表。例如: ID Name Comments --------------------- 1 | Sample | "Hai. Hello. How." 但最终的BCP输出文件有三行而不是一行: 1^|^Sample^|^Hai Hello^|^ How^|^ BCP查询: bcp table out table_one.bcp -c -t "^|^" -Q -User -Password. 尝试稍

我需要BCP一个在一列中包含三行的表。例如:

ID  Name    Comments
---------------------
 1 | Sample |   "Hai.
             Hello.
         How."
但最终的BCP输出文件有三行而不是一行:

1^|^Sample^|^Hai
Hello^|^
How^|^
BCP查询:

bcp table out table_one.bcp -c -t "^|^" -Q -User -Password.

尝试稍微不同的命令

bcp "select * from db..table" queryout "C:\dir\file.bcp" -n -T -SServer

如果源文本中有Windows行分隔符(
{CR}{LF}
),但不希望在输出文件中使用这些分隔符,则可以在查询中使用您喜欢的内容(例如空格)替换它们

考虑以下代码段。源数据包含Windows行分隔符。在查询中,这些将替换为空格。您将在输出文件中看到,源文本不再有多行。您应该能够从SSMS运行此代码段

CREATE TABLE ##t(header INT IDENTITY(1,1) PRIMARY KEY,txt VARCHAR(1024));
INSERT INTO ##t(txt)VALUES
('This is the first line.
This is the second line.
This is the third line'),
('Again the first line.
Again the second line.
Again the third line.');

DECLARE @cmd NVARCHAR(4000)='BCP "SELECT header,REPLACE(txt,CHAR(13)+CHAR(10),'' '') FROM ##t" QUERYOUT "C:\Temp\test_txt.txt" -c -T -S ' + @@SERVERNAME + ' -d ' + DB_NAME();
EXECUTE master.sys.xp_cmdshell @cmd;

DROP TABLE ##t;
输出文件
C:\Temp\test\u txt.txt

1这是第一行。这是第二行。这是第三行
2.还是第一行。第二行。第三行。

当源数据包含换行符时,您希望在输出中看到什么?具有三个值(行)而不是单行的输出。我想要单行。你应该解决问题,而不是症状。通过用分隔符替换换行符来修复源数据。我们无法编辑源表。让我们重试。您的数据包含换行符。如果希望put输出包含与数据不同的内容,则需要首先确定这些内容的不同之处。那么,当数据包含换行符时,您希望看到什么?