将分隔文件导入sql server 2008

时间:2011-09-07 03:17:46

标签: sql-server-2008 ssms

我正在尝试将管道分隔文件导入到sql server 2008.最后一列真的很长,所以它应该是varchar(max)或text。

我正在使用导入向导。我已将源设置为Flat File,并将目标设置为Sql Native Client。

我在第一个数据行中设置了'列名'。

向导正确读取列名,但它希望使每列varchar(50)。我在向导中找到了一个高级选项卡,我可以在其中设置数据类型,但它似乎只设置数据流的类型而不是目标表?稍后我会进行一些对话框“编辑映射”,它允许我将源列映射到目标列,并设置目标列是否可为空,但它不允许我设置目标列的数据类型。

无论如何,我很困惑。是否可以使用向导导入超过50个字符的数据?因为它似乎不想让我。

2 个答案:

答案 0 :(得分:0)

您是否尝试将数据源列上的数据类型设置为text stream [DT_TEXT]

enter image description here

当我测试它时,它在text类型的目标表中创建了一个列。

修改:

但是,如果您不想创建具有弃用数据类型的表(请参阅下面的评论),我建议您先创建表,然后使用BULK INSERT

CREATE TABLE ImportTest (ID INT, Name VARCHAR(50), Description VARCHAR(MAX)) 
GO

BULK INSERT ImportTest
   FROM 'C:\Download\ImportTest.txt'
   WITH 
      (
         FIELDTERMINATOR ='|',
         ROWTERMINATOR ='\n',
         FIRSTROW = 2           -- Skip the header row
      )

答案 1 :(得分:0)

你几乎就在那里使用了“编辑映射”设置。 “创建目标表”单选按钮旁边有一个“编辑SQL”。但我通常发现向导的其余部分仍然没有更新以反映您编辑的SQL。

在这种情况下,我通常会在启动向导之前手动创建具有适当列,可空性等的表。