从文件中将文本插入TEXT列

时间:2010-11-02 16:58:23

标签: sql sql-server tsql sql-insert

最简单的方法 - 最好只使用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])

此外,是否可以以类似的方式进行更新? E.g。

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

3 个答案:

答案 0 :(得分:2)

您可以使用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 Standard或更高版本,则可以使用SSIS。您可以创建数据流,删除输入文本文件的图标,删除目标表的图标,然后单击“播放”。要使这与SQL一起工作,您需要使用上面的xp_cmdshell之类的东西来调用它。就文本文件而言,SSIS是您对BCP所做的视觉。

答案 1 :(得分:0)

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

以下是最简单的选择:

  • 重新格式化您的文本文件,使其成为sql语句。例如,如果您要将一行文本插入名为name的表中,则可以将insert into names value('放在每行的开头,并将')放在最后。然后将其复制并传递给经理并运行它。

  • 使用批量插入(link

  • 使用SSIS / DTS(link

答案 2 :(得分:0)

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