2016-10-22 7 views
2

Ich benutze Microsoft SQL Server 2012 als DBMS, dort habe ich meine Datenbank, die Informationen über Fußballspieler enthält. Jeder Spieler hat eine Fotografie, und ich muss die Fotos der Spieler auf meinen Computer exportieren, ich denke, es ist möglich, dies über TSQL zu tun, so dass ich die Programmierung oder Bearbeitung meiner Anwendung zum Exportieren von Fotos vermeiden könnte.Exportieren von Bildern von einem SQL Server mit gespeicherten Prozeduren

Hier ist, was ich bisher getan:

enter image description here

MY SQL Code:

EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'xp_cmdshell', 1 GO GO RECONFIGURE

EXEC master..xp_cmdshell 'mkdir C: \ ImagesFromSql'

012.

EXEC master..xp_cmdshell 'BCP "SELECT Foto FROM [Footballteam] [dbo] [Spieler].." Queryout "C: \ ImagesFromSql \ TestImage.jpg" -T N'

Wie Sie können sehen, mein Ordner ImagesFromSql ist auf "C: \" erstellt, auch ein Foto ist dort gespeichert, aber interessant ist, dass das Foto 361MB groß ist, also wahrscheinlich ist die Größe aller Fotos, die in der Datenbank enthalten sind? Und ich frage mich, wie könnte ich alle Bilder aus der Datenbank in diesem Fall exportieren, und ist es möglich, ihre Namen zu setzen, lassen Sie zum Beispiel Bildname als PlayerID, zum Beispiel 1.jpg, 2.jpg, 3.jpg .... 650.jpg ...

nach @ H.Fadlallah einige Antworten vorgeschlagen das ist, was ich bekommen: enter image description here

Es ist unmöglich, Vorschaubild .. :)

Wieder nach @ H.Fadlallah Hilfe Ich habe diese Abfrage ausgeführt:

DECLARE @ID als int ERKLÄREN @SQL als varchar (4000)

DECLARE csr CURSOR FOR SELECT PlayerID VON [Footballteam]. [Dbo]. [Spieler]

OPEN csr

als nächstes in @ID VON csr FETCH

wÄHREND @@ FETCH_STATUS = 0

SET @SQL = 'BCP "SELECT Foto FROM [Footballteam]. [dbo]. [Spieler] WHERE PlayerID ="' BEGIN + CAST (@ID als varchar (10)) + 'Abfrage "C: \ ImagesFromSql \ '+ CAST (@ID als VARCHAR (10)) +' jpg" -T -f C: \ ImagesFromSql \ formatfile.fmt‘

EXEC Master ..xp_cmdshell @SQL

als nächstes in @ID VON csr FETCH

END

SCHLIEßEN csr AUFLÖSEN csr

Aber jetzt leer Bilder Ich bin immer, wahrscheinlich ich etwas .. verpasst (btw Datei formatfile.fmt wird in denselben Ordnern wie Bilder erstellt und ich habe den Binärwert für mein Photo-Attribut von 8 auf 0 geändert, wie H.Fadallah mir in einem anderen Post vorgeschlagen hat).

+0

Diese eine sehr nützliche Frage, ich hoffe, so antworten Sie mit der rechten jemand geben! Ich muss auch auf diese Frage antworten! –

Antwort

1

versuchen die folgende Abfrage:

EXEC sp_configure 'show advanced options', 1 

GO 
RECONFIGURE 
GO 
EXEC sp_configure 'xp_cmdshell', 1 
GO 
RECONFIGURE 
GO 

EXEC master..xp_cmdshell 'mkdir C:\ImagesFromSql' 


DECLARE @ID as int 
DECLARE @SQL as varchar(4000) 

DECLARE csr CURSOR FOR SELECT ID FROM [FootballTeam].[dbo].[Players] 

OPEN csr 

FETCH NEXT FROM csr INTO @ID 

WHILE @@FETCH_STATUS = 0 
BEGIN 


SET @SQL = 'BCP "SELECT Photo FROM [FootballTeam].[dbo].[Players] WHERE ID = "' + CAST(@ID as varchar(10)) + ' queryout "C:\ImagesFromSql\' + CAST(@ID as varchar(10)) + '.jpg" -T -N' 

EXEC master..xp_cmdshell @SQL 

FETCH NEXT FROM csr INTO @ID 

END 


CLOSE csr 
DEALLOCATE csr 
+0

erste Zeile gibt mir diesen Fehler: Msg 102, Ebene 15, Status 1, Zeile 1 Falsche Syntax in der Nähe von 'GO'. Msg 102, Ebene 15, Status 1, Zeile 1 Falsche Syntax in der Nähe von 'GO'. –

+0

i Fehler behoben Erneut versuchen – Hadi

+0

Nächste Meldung: Die Konfigurationsoption 'show advanced options' wurde von 1 auf 1 geändert. Führen Sie die RECONFIGURE-Anweisung zur Installation aus. Die Konfigurationsoption 'xp_cmdshell' wurde von 1 auf 1 geändert. Führen Sie die zu installierende RECONFIGURE-Anweisung aus. Msg 102, Ebene 15, Status 1, Zeile 11 Falsche Syntax in der Nähe von "NEXT". Msg 102, Ebene 15, Status 1, Zeile 21 Falsche Syntax in der Nähe von 'NEXT'. –

Verwandte Themen