我正在尝试将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"
是否有解决方法?
答案 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?