2014-11-01 129 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 = '' '')