如何使用 SQLCMD 从本地文件插入二进制数据? [英] How do I INSERT binary data from a local file with SQLCMD?

查看:37
本文介绍了如何使用 SQLCMD 从本地文件插入二进制数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I need to insert binary data from a file into a varbinary(max) column in SQL Server as a part of my deployment script.

文件在本地机器上,SQL Server 在远程机器上.

The file is on the local machine, SQL Server is on the remote.

这里是数据表定义

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')??? )

即数据取自本地文件.

我该怎么做?

推荐答案

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

Absolutely you can insert and update binary data into a VARBINARY(MAX) field with sqlcmd by using OPENROWSET() pointing to path of file. Do note the file path cannot be dynamically concatenated or passed as a parameter but hard coded as is.

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

这篇关于如何使用 SQLCMD 从本地文件插入二进制数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆