【发布时间】:2016-01-26 17:21:56
【问题描述】:
我有一张桌子:
USE [testdb]
GO
CREATE TABLE [dbo].[a](
[n] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
[x] [xml] NULL)
GO
如何从客户端将 xml 文件插入到字段 x 中? MSDN Example 不适合我。
INSERT INTO T(XmlCol)
SELECT * FROM OPENROWSET(
BULK 'c:\SampleFolder\SampleData3.txt',
SINGLE_BLOB) AS x;
我不是此服务器的管理员。我只有访问数据库的权限。我无法将文件放在服务器上的目录中。我可以使用 BCP 和其他工具访问数据库
XML 文件非常大(> 50 MB),因此它不会在查询 SSMS 中将文件文本作为常量插入
【问题讨论】:
-
那么,问题是如何使用 BCP 实用程序在表的 xml 列中插入 XML 值?
-
请解释一下,“我无法访问磁盘服务器”和“XML文件非常大”...你有一个文件但你不能访问它?请详细说明。在您的问题中提供更多背景信息(单击问题下方的
edit链接并提供更多背景信息)。 -
我不是这台服务器的管理员。我只有访问数据库的权限。我无法将文件放在服务器上的目录中。我可以使用 BCP 和其他工具访问数据库
-
当然,但是bcp 实用程序在 Microsoft SQL Server 实例和用户指定格式的数据文件之间批量复制数据。(来自BCP utility)。如果要使用 BCP,XML 必须在文件中。您的文件将位于何处?也许您正在寻找错误的工具。您希望在什么环境中存储 XML 文件:.NET 程序、Java 程序、网页……还是您的环境真的是 SQL Server?
-
当然,我可以这样写:
Using cnn As New SqlConnection(_cnnString) cnn.Open() Dim com As New SqlCommand("insert into dbo.a(x) values (@x)", cnn) With {.CommandType = CommandType.Text} com.Parameters.Add("@x", SqlDbType.NVarChar, -1) com.Parameters("@x").Direction = ParameterDirection.Input com.Parameters("@x").Value = IO.File.ReadAllText(_Path) com.ExecuteNonQuery() End Using,但我需要一个标准工具来做同样的事情。也许不是 bcp。
标签: sql-server xml tsql bcp