2014-11-01 189 views
0

我有這個疑問:BULK INSERT到SQL Server - 使用FIELDTERMINATOR

BULK INSERT Employee 
FROM 'E:\\file.txt' --location with filename 
WITH 
(
    FIELDTERMINATOR = ' ', 
    ROWTERMINATOR = '\n' 
) 
GO 

而且我的文件中,數據是這樣的:

43266200 6827   43295200 1393/05/23 14:26:26  18  1 

我想這個數據插入到我的表,但在我的fieldterminator文件中有一個錯誤,SQL Server抱怨字段間的空格或製表符錯誤。我該如何解決這個問題?
我可以使用這個嗎?

BULK INSERT Employee 
    FROM 'E:\\file.txt' --location with filename 
    WITH 
    (
     FIELDTERMINATOR = ' ' or ' ' or '  ', 
     ROWTERMINATOR = '\n' 
    ) 
    GO 


或如何導入此txt文件到SQL Server?

+0

'FROM「E:\\ file.txt''這是你正在運行或者是你想從你的C#源代碼提取出來,SANS'「'實際的SQL ?因爲它看起來像後者。在這種情況下,請注意正在運行的* actual * SQL語句。 – 2014-11-01 06:27:58

+0

我認爲在我的文件的字段之間有一個製表符空間和簡單的空間,例如43266200space6827 \ t43295200 – 2014-11-01 06:30:05

回答

0

如果您在數據文件中的字段之間的製表,然後使用此:

BULK INSERT Employee 
FROM 'E:\\file.txt' --location with filename 
WITH 
(
    FIELDTERMINATOR = '\t', 
    ROWTERMINATOR = '\n' 
) 
GO 

\t表示標籤 - 這應該告訴SQL Server來解釋一個標籤爲兩個領域之間的隔板。

+0

感謝您關注我的問題,但我的朋友在我的文件,例如43266200和6827之間的字段有一個3空間,6827和43295200之間有一個\ t – 2014-11-01 07:33:58

+0

,當你的查詢在我的sql服務器上運行時: – 2014-11-01 07:34:37

+0

Msg 4832,Level 16,St第1行第1行 批量加載:在數據文件中遇到意外的文件結尾。 Msg 7399,Level 16,State 1,Line 1 鏈接服務器「(null)」的OLE DB提供程序「BULK」報告了錯誤。提供者沒有提供任何關於錯誤的信息。 Msg 7330,Level 16,State 2,Line 1 無法從鏈接服務器「(null)」的OLE DB提供程序「BULK」中獲取一行。錯誤 – 2014-11-01 07:34:58

0

代碼:

BULK INSERT #ProspectiveFile 
        FROM ''C:\Matt\' + @DataFileName + '.txt'' 
        WITH (ROWTERMINATOR = ''\n'' 
         ,FIELDTERMINATOR = '' '')