2011-04-05 97 views
2

这是查询我已经找到了将二进制数据(用VARBINARY),这是可以正常使用 CREATE TABLE Employees (
Id int,
Name varchar(50) not null,
Photo varbinary(max) not null
)
问题通过SQL查询(SQL Server 2008中)将二进制数据

INSERT INTO Employees (Id, Name, Photo)
SELECT 10, 'John', BulkColumn from Openrowset(Bulk 'C:\photo.bmp', Single_Blob) as EmployeePicture

但是,如果表员工有什么列,如:
CREATE TABLE Employees (
Id int,
Photo varbinary(max) not null,
Name varchar(50) not null
)

[组图列第二看过来!]
我试图操纵插入查询,但没有帮助!

+0

东西向我们展示你尝试过什么查询。你是否试图按照原样使用查询?由于您正在使用列出列名的'INSERT INTO'变体,因此列的顺序与实际表中的顺序无关 - 这就是使用列名的要点 - 无需担心关于他们在桌上的顺序。 – QuantumMechanic 2011-04-05 16:12:14

回答

2

你会使用

INSERT INTO Employees 
SELECT 10, BulkColumn AS EmployeePicture, 'John' 
FROM OPENROWSET(BULK 'C:\photo.bmp', Single_Blob) bc 

或者

INSERT INTO Employees 
SELECT 10, 
     (SELECT BulkColumn AS EmployeePicture FROM OPENROWSET(BULK 'C:\photo.bmp', Single_Blob) bc), 
     'John' 

我相信你很可能试图这样

INSERT INTO Employees 
SELECT 10, 
     BulkColumn AS EmployeePicture FROM OPENROWSET(BULK 'C:\photo.bmp', Single_Blob), 
     'John' 
+0

你是对的马丁!这是我尝试的7到8个查询之一。 :)我会使用第二个查询,因为它在逻辑上是合理的,并且可以通过它轻松插入多个二进制数据。有没有在线资源,我可以学习和理解这些查询的语法?我知道在[W3Schools](http://www.w3schools.com)上提供的SQL的基础知识,但这些复杂的查询很难找到。顺便说一句你用哪种格式来显示查询? – user646093 2011-04-06 14:10:58

+0

要将查询格式化为StackOverflow中的代码,请选择要格式化为代码的文本并点击代码图标'{}'。不太确定在线资源。 Joe Celko的SQL for Smarties绝对值得一读。 – 2011-04-06 14:16:37

+1

再次感谢马丁。我拿到了这本书,肯定会从中得到一些东西。 – user646093 2011-04-07 17:43:05