2010-11-02 77 views
0

什么是最简单的方法 - 最好是使用SQL Server Management Studio - 从文件中将文本插入到Text类型列(text, ntext, varchar(max), nvarchar(max))中。从文件中插入文本到文本列

说一个有一个表

textFileContent(id, textData) 

,并希望做

insert into textFileContent(textData) 
values([data read from a file, complete file content]) 

而且,是有可能做更新以类似的方式?例如。

update textFileContent 
set textData = [data read from a file, complete file content] 
where id = 1 
+1

改用SSIS/DTS? – brumScouse 2010-11-02 16:59:45

+1

从SQL Server 2005开始,TEXT,NTEXT,IMAGE是**弃用的** - 如果可能的话,应尽量避免使用它们(尤其是如果您创建新的东西的话)。 – 2010-11-02 17:00:07

回答

0

答案取决于您的使用案例。我猜你需要在项目开始时加载数据......如果你需要将数据“馈入”SQL服务器,那么我会有一个不同的答案。

这是最简单的选择:

  • 格式化文本文件,所以它是一个SQL语句。例如,如果你有一行文本想要插入名为表的名字,你可以在每行的开始处输入insert into names value(',最后输入')。然后复制并将其过滤到管理器中并运行它。

  • 使用BULK INSERT(link

  • 使用SSIS/DTS(link

+0

感谢霍根,所以假设我有服务器上的文件说c:\ testFile.txt将完整的内容上传到单个行我该怎么做:“从'c:\ r781.txt'批量插入txtFileContent'”? – padn 2010-11-02 17:34:07

+0

在这种情况下,我个人只会修改文件并在管理器中运行它 - 我总是必须使用试验和错误才能使批量插入工作。去做。首先制作你的表格的副本,然后测试,直到它开始工作为止。 – Hogan 2010-11-02 17:36:57

+0

在有多个字段的非常大的文件上,我对SSIS和XML取得了很多成功。 – 2010-11-02 18:00:34

0

您可以使用OPENROWSET一个文本文件导入数据。但是,为此,您可能还必须定义格式文件。你可以找到更多的帮助here

1

你可以使用xp_cmdshell的:

create table #mytable 
(
    id int IDENTITY(1,1) NOT NULL, 
    result nvarchar(MAX) NULL 
) 

insert into #mytable (result) 
exec xp_cmdshell 'type c:\somefile.txt' -- this may require cmd before it 

这应该转储到表,其中硬回车表示新记录的文字。

否则,如果您有SQL Express,则仅限于BCP和BULK INSERT。如果您先创建表格以生成格式文件,则BCP中有命令。请记住,如果您的分隔符是Unicode,那么您的分隔符是两个字符\n\0\r\0(或类似的内容)

否则,如果您有SQL标准或以上版本,则可以使用SSIS。您可以创建数据流,为输入文本文件放置图标,放下目标表的图标,然后单击播放。为了使这个工作与SQL,你需要用类似上面的xp_cmdshell来调用它。就文本文件而言,SSIS是您将使用BCP做什么的视觉效果。