Fügen Sie das Bild nur mit SQL in das SQL Server 2005-Bildfeld ein

73

Wie füge ich mit SQL Server 2005 und Management Studio ein Bild in eine ImageTypenspalte einer Tabelle ein?

Wie überprüfe ich vor allem, ob es vorhanden ist?

Keimsturm
quelle

Antworten:

95
CREATE TABLE Employees
(
    Id int,
    Name varchar(50) not null,
    Photo varbinary(max) not null
)


INSERT INTO Employees (Id, Name, Photo) 
SELECT 10, 'John', BulkColumn 
FROM Openrowset( Bulk 'C:\photo.bmp', Single_Blob) as EmployeePicture
Darin Dimitrov
quelle
23
Es ist wichtig zu beachten, dass der aufgeführte Pfad auf dem SQL Server gesucht wird (nicht auf dem Abfragemaschinen). Wenn Ihr SQL Server also nicht Ihr Entwicklungscomputer ist, müssen Sie Ihr Image vom SQL Server-Computer referenzieren lassen.
Vaccano
Ich habe die gleichen Daten in MSSQL gespeichert und in MySQL exportiert? Welche Schritte müssen mit PHP angezeigt werden?
Tapaljor
41

So aktualisieren Sie einen Datensatz:

 UPDATE Employees SET [Photo] = (SELECT
 MyImage.* from Openrowset(Bulk
 'C:\photo.bmp', Single_Blob) MyImage)
 where Id = 10

Anmerkungen:

  • Stellen Sie sicher, dass Sie die Rollenberechtigungen 'BULKADMIN' für das von Ihnen verwendete Login hinzufügen.
  • Bei Verwendung von SQL Server Management Studio zeigen Pfade nicht auf Ihren Computer. Wenn Sie SSMS auf Ihrem lokalen Computer starten und eine Verbindung zu einer SQL Server-Instanz auf Server X herstellen, zeigt die Datei C: \ photo.bmp auf Festplatte C: auf Server X, nicht auf Ihrem Computer!
mathijsuitmegen
quelle
Wie kann ich vorgehen, wenn mein Image lokal gespeichert ist und ich es in die Remote-Datenbank einfügen möchte?
Joze
2
Verwenden Sie eine Netzwerkfreigabe: UPDATE Employees SET [Photo] = (SELECT MyImage. * Aus Openrowset (Bulk '\\ Ihr Computername \ Shared Folder \ photo.bmp', Single_Blob) MyImage) wobei Id = 10
mathijsuitmegen
0

Tabelle erstellen:

Create Table EmployeeProfile ( 
    EmpId int, 
    EmpName varchar(50) not null, 
    EmpPhoto varbinary(max) not null ) 
Go

Anweisung einfügen:

Insert EmployeeProfile 
   (EmpId, EmpName, EmpPhoto) 
   Select 1001, 'Vadivel', BulkColumn 
   from Openrowset( Bulk 'C:\Image1.jpg', Single_Blob) as EmployeePicture

Diese SQL-Abfrage funktioniert einwandfrei.

prasanna.yelsangikar
quelle
0

Ich habe das Ziel erreicht, bei dem ich mehrere Bilder in die Datenbank einfügen muss

INSERT INTO [dbo].[User]
           ([Name]
           ,[Image1]
           ,[Age]
           ,[Image2]
           ,[GroupId]
           ,[GroupName])
           VALUES
           ('Umar'
           , (SELECT BulkColumn 
            FROM Openrowset( Bulk 'path-to-file.jpg', Single_Blob) as Image1)
           ,26
           ,(SELECT BulkColumn 
            FROM Openrowset( Bulk 'path-to-file.jpg', Single_Blob) as Image2)
            ,'Group123'
           ,'GroupABC')

DevLoverUmar
quelle