将byte []作为参数传递给sql插入脚本

时间:2019-08-13 20:05:48

标签: sql powershell sqlcmd

我正在尝试将Zip文件夹的binary []上传到我的数据库。我使用Get-Content -Encoding Byte -ReadCount 0将数据读入变量。我想在INSERT语句中使用此变量。不幸的是,sqlcmd不喜欢变量的大小,并给了我这个错误:

Program 'SQLCMD.EXE' failed to run: The filename or extension is too longAt line:1 char:1.

我尝试使用-Q选项运行查询,也尝试使用-i运行sql文件。


DECLARE @data varbinary(MAX)
SET @data = '$(data_stuff)'

INSERT INTO MyTable
(v1,v2,v3,v4,v5)
VALUES
(v1,v2,v3,v4,@data)

sqlcmd -S servername -E -i .\file.sql -v data = "$binarydata"

是否有解决方法?

1 个答案:

答案 0 :(得分:0)

在SQL查询/批处理/ .sql文件中,binary / varbinary / image文字数据值必须为带有0x前缀的十六进制格式:

INSERT INTO tableName ( binaryColum ) VALUES ( 0x1234567890ABCDEF )

我不知道二进制文字的最大长度是多少,但是我怀疑如果超过了几百千字节,事情可能会停止工作或变得非常慢。

我建议直接通过PowerShell使用ADO.NET,这也将允许您使用二进制参数值(SqlParameter):How do you run a SQL Server query from PowerShell?