Как мне вставить двоичные данные из локального файла с помощью SQLCMD? - PullRequest
1 голос
/ 21 мая 2010

Мне нужно вставить двоичные данные из файла в столбец varbinary (max) в SQL Server как часть моего сценария развертывания.

Файл находится на локальном компьютере, 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')??? )

т.е. данные взяты из локального файла.

Как я могу это сделать?

Ответы [ 3 ]

1 голос
/ 21 апреля 2011

Google 'SQL BULK INSERT', которая может дать вам хоть какую-то вставку из файлов, хотя она предназначена для нескольких строк.

1 голос
/ 28 ноября 2017

Абсолютно вы можете вставлять и обновлять двоичные данные в поле VARBINARY(MAX) с помощью sqlcmd, используя OPENROWSET(), указывая путь к файлу. Обратите внимание, что путь к файлу не может быть динамически связан или передан как параметр, но жестко задан как есть.

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
0 голосов
/ 26 мая 2010

Конечно, это невозможно только с SQLCMD.

Здесь необходим более мощный инструмент развертывания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...