3

我在文件中有这样的文本:

In the name of God, the Mercy-giving, the Merciful! (1)
Praise be to God, Lord of the Universe, (2)
the Mercy-giving, the Merciful (3)
Ruler on the Day for Repayment! (4)
...

然后,一个有 2 个字段的表,如下所示:

TextData Varchar(max) NoNullable
Id       Int          NoNullable Identity(1,1) 

何时使用此查询:

bulk insert MyDb.dbo.translation 
   FROM 'd:\IRVING.Arb' 
   WITH 
      ( 
         ROWTERMINATOR ='\n', 
         codepage='1256' 
      )

我得到(0 行受影响)

但是,当我从 table 中删除 Id 列时,所有行数据都会复制它。

如何在 Id 列中存储文件的行号?

4

1 回答 1

2

该文件的格式非常具体,您必须指定一个名为“格式文件”的功能,以便 SQL Server 知道您的文件的映射(文件的哪个部分属于哪个 sql 列)

你可能会使用这样的东西:

C:\test_format.fmt :

9.0
4
1       SQLCHAR       0       100      "("         1     Text 
2       SQLINT        0       12       ")\r\n"     2     Id 

将此添加到您的批量插入:

bulk insert MyDb.dbo.translation 
   FROM 'd:\IRVING.Arb' 
   WITH 
      ( 
         codepage='1256',
         FORMATFILE = 'C:\test_format.fmt'
      )

在此处阅读有关格式文件的更多信息:http: //msdn.microsoft.com/en-us/library/ms178129.aspx

于 2013-06-16T09:17:10.840 回答