2

作为部署脚本的一部分,我需要将文件中的二进制数据插入到 SQL Server 中的 varbinary(max) 列中。

该文件在本地计算机上,SQL Server 在远程计算机上。

这是数据表定义

CREATE TABLE [dbo].[Config] (
    [ID]   INT            IDENTITY (1, 1) NOT NULL,
    [Name] NVARCHAR (50)  NOT NULL,
    [Cfg]  VARBINARY(MAX) NOT NULL
);

我需要类似这个伪命令的东西

INSERT INTO Config(ID, Name, Cfg) VALUES (0, 'Default', ????('Default.cfg')??? )

即数据取自本地文件。

我怎样才能做到这一点?

4

3 回答 3

1

谷歌“SQL BULK INSERT”至少可以让你从文件中插入一些内容,尽管它适用于多行。

于 2011-04-20T20:16:17.757 回答
1

VARBINARY(MAX)绝对可以使用OPENROWSET()指向文件路径的sqlcmd将二进制数据插入和更新到字段中。请注意,文件路径不能动态连接或作为参数传递,而是按原样硬编码。

T-SQL (另存为 .sql 脚本)

USE mydatabase;
GO

INSERT INTO Config ([ID], [Name], [Cfg]) VALUES (0, 'Default', 
    (SELECT * FROM OPENROWSET(BULK N'C:\Path\To\Default.cfg', SINGLE_BLOB) AS CFG_FILE));

UPDATE Config SET [Cfg] =
    (SELECT * FROM OPENROWSET(BULK N'C:\Path\To\Default.cfg', SINGLE_BLOB) AS CFG_FILE)
WHERE ID = 0;
GO

sqlcmd (命令行)

sqlcmd -S myServer\instanceName -i C:\Path\To\myScript.sql
于 2017-11-28T14:40:53.323 回答
0

无论如何,单独使用 SQLCMD 是不可能的。

这里需要一个更强大的部署工具。

于 2010-05-26T16:53:09.483 回答