SQL Server 2008 - 批量将整个文本文件插入到一个字段中

时间:2010-03-11 10:17:53

标签: sql-server tsql bulkinsert

我有一个包含格式化文本的文本文件(txt)(只是换行符,回车符和制表符) 它还包含德语字符。

我想在T-SQL中使用批量插入注释将文本文件读入数据库表中的一个字段。

我跑了这个命令:

 CREATE TABLE #MyTestTable (
    MyData NVARCHAR(MAX)
 )

 BULK INSERT [#MyTestTable]
FROM 'D:\MyTextFile.txt'

 SELECT * FROM #MyTestTable

问题是它将文本文件的每一行读入Temp表中的新行。我希望它将整个文件(格式化和全部)读成一行。

此外,德语字符似乎丢失了 - 取而代之的是结果视图中的不可打印字符默认值。

有任何想法我怎么能实现这个目标?

感谢。

3 个答案:

答案 0 :(得分:5)

您可以使用ROWTERMINATORCODEPAGE参数。默认行终止符是'\ r \ n'。对于CODEPAGE,您需要知道原始文件的编码和数据库的默认排序规则。

BULK INSERT [#MyTestTable]
FROM 'D:\MyTextFile.txt'
WITH (ROWTERMINATOR = '\0',
      CODEPAGE = 'ACP')

另见http://msdn.microsoft.com/en-us/library/ms188365.aspx

答案 1 :(得分:2)

使用此:

FIELDTERMINATOR = '|',
ROWTERMINATOR = '\n'

|是您的列分隔符。

答案 2 :(得分:0)

  • 不要使用批量插入。它是每行一个记录。你需要编写代码。
  • 正确处理代码中从文本文件到unicode(nvarchar)的转换。批量插入可能会显示标准代码页,丢失您的角色。

这真的很需要一些小的编程工作 - 一个小时左右的工作,加上简单的测试和运行所需的时间。