6

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

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

我运行了这个命令:

 CREATE TABLE #MyTestTable (
    MyData NVARCHAR(MAX)
 )

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

 SELECT * FROM #MyTestTable

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

此外,德语字符似乎丢失了 - 由结果视图中的不可打印字符默认替换。

任何人都知道如何实现这一目标?

谢谢。

4

3 回答 3

7

你可以使用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

于 2010-03-11T10:27:28.030 回答
2

用这个:

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

|您的列分隔符在哪里。

于 2010-09-07T15:00:38.043 回答
0
  • 不要使用批量插入。每行记录一条记录。你需要编写代码。
  • 正确处理从文本文件到代码中的 unicode (nvarchar) 的转换。批量插入可能应用了标准代码页,丢失了你的字符。

这真的很需要一些小的编程工作——一个小时左右的工作,再加上另一个测试和尽可能长的运行时间。

于 2010-03-11T10:21:20.120 回答