2013-07-18 42 views
5

我正在使用BULK INSERT將文本文件加載到從SQL Anywhere數據庫創建的SQL Server中。我們正在接收的文本文件具有包含製表符的字段。他們在文本文件中被轉義爲「\ x09」。批量插入製表符分隔文件 - unescape x09

我可以讓SQL Server識別這個轉義序列嗎?

有一些行有足夠的這些轉義序列,當我執行BULK INSERT時,它們會導致截斷錯誤。我寧願讓SQL Server將它們重新轉換爲製表符。


更新(7/26):這裏的示例文件數據

ID Name  Desc 
1  Value 1 Some text:\x09with tabs 
2  Value 2 More Text:\x09with more\x09tabs 

所以,在這個例子中,它需要31個字符,以表達對說明字段的值與ID 2的記錄。但是,它應該以25個字符的形式插入到數據庫中。

+0

你能澄清,如果你想批量插入通過選項卡拆分成多列,或者如果你希望它是一個長柱標籤內。 –

+0

轉義序列(\ x09)應作爲製表符插入到單個數據庫列中。我用示例文件數據更新了問題 – Dingels35

回答

7

使用臨時表:

IF OBJECT_ID('tempdb..#test1') IS NOT NULL 
DROP TABLE #test1; 
GO 

CREATE TABLE #test1 
    (
    ID integer NOT NULL, 
    Name varchar(30) NOT NULL, 
    [Desc] varchar(50) NOT NULL, 
    ) 


BULK 
INSERT #test1 
FROM 'd:\111.txt' 
WITH 
(
FIELDTERMINATOR = '\t', 
ROWTERMINATOR = '\n' 
); 

SELECT ID, Name, REPLACE([Desc], '\x09', ''), '\x09' AS Delimeter 
--INTO YourTable 
FROM #test1