2

什么是最简单的方法 - 最好只使用 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
4

3 回答 3

3

您可以使用 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 执行的操作的可视化。

于 2010-11-02T17:51:43.407 回答
0

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

于 2010-11-02T17:42:12.377 回答
0

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

以下是最简单的选择:

  • 重新格式化您的文本文件,使其成为 sql 语句。例如,如果您有一行文本要插入到名为名称的表中,您可以将其放在insert into names value('每行的开头和')结尾。然后将其复制并粘贴到管理器中并运行它。

  • 使用批量插入(链接

  • 使用 SSIS/DTS(链接

于 2010-11-02T17:07:34.607 回答