Sql server BCP单列中有多行的表
我需要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. 尝试稍
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输出包含与数据不同的内容,则需要首先确定这些内容的不同之处。那么,当数据包含换行符时,您希望看到什么?