Sql 将文本从文件插入文本列

Sql 将文本从文件插入文本列,sql,sql-server,tsql,sql-insert,Sql,Sql Server,Tsql,Sql Insert,从文件中将文本插入text类型列(text、ntext、varchar(max)、nvarchar(max))的最简单方法是什么?最好只使用SQL Server Management Studio 比如说,我有一张桌子 textFileContent(id, textData) 你想做什么 insert into textFileContent(textData) values([data read from a file, complete file content]) 另外,是否可以以类

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

比如说,我有一张桌子

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

答案在一定程度上取决于您的用例。我猜您需要在项目开始时加载数据。。。如果您需要将数据“馈送”到SQL server,那么我会有一个不同的答案

以下是最简单的选择:

  • 重新格式化文本文件,使其成为sql语句。例如,如果有一行文本要插入到名为names的表中,则可以将
    insert-into-names-value(“
    在每行的开头,
    ”)
    放在末尾。然后将其复制并通过manager并运行它

  • 使用批量插入()

  • 使用SSI/DTS()


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

您可以使用xp\u 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和大容量插入。如果您首先创建表以生成格式文件,BCP中会有一些命令。请记住,如果是Unicode,则分隔符是两个字符
\n\0\r\0
(或类似的内容)


否则,如果您具有SQL标准或更高版本,则可以使用SSIS。创建数据流,为输入文本文件放置图标,为目标表放置图标,然后单击播放。要使用SQL实现这一点,您需要使用上面的xp\u cmdshell之类的东西来调用它。就文本文件而言,SSI是您将如何使用BCP的直观体现。

text、NTEXT和IMAGE从SQL Server 2005开始就不推荐使用-如果可能的话,您应该避免使用它们(特别是在您创建新文件的情况下)。感谢Hogan,因此,假设我在服务器上有一个文件,比如说c:\testFile.txt,将完整内容上传到一行,我该怎么做:“从‘c:\r781.txt’批量插入txtFileContent”?在这种情况下,我个人只需修改文件并在manager中运行它——我总是要使用反复试验来让批量插入工作。那样做。在获得金牌之前,先复制一份表格,并测试它是否正常工作。我在SSIS和XML方面取得了很大的成功,这些文件都有多个字段。@Zim博士:是的。在这种情况下,听起来他只有一个字段。我对用例有点困惑。耸肩