Pfad aus Select in xp_cmdshell verwenden

POLAT

Benutzer
Beiträge
7
hi

Ich habe in der Datenbank in einer Tabelle ein Pfad mit Datei gespeichert.
Jetzt möchte ich das Ergebnis aus einer SQL Anweisung (Pfade) über xp_cmdshell kopieren.

Kann mir einer weiterhelfen?

Select QuellDateiMitPfad, Zieldatei from xx -- Hier stehen die Informationen. Diese möchte ich gerne in xp_cmdshell verwenden.
 
Werbung:
prinzipiell ganz einfach: du übergibst der DB die Abfrage in der shell, läßt das Ergebnis dann ausgeben und verwendest es dann. Demo:

Code:
akretschmer@akretschmer-desktop:~$ cat $(psql test -t -c "select 'x.txt'")
demo

Die Datei 'x.txt' enthält schlicht "demo" als Inhalt.

Achtung: ich verwende Linux, Bash & PostgreSQL
 
prinzipiell ganz einfach: du übergibst der DB die Abfrage in der shell, läßt das Ergebnis dann ausgeben und verwendest es dann. Demo:

Code:
akretschmer@akretschmer-desktop:~$ cat $(psql test -t -c "select 'x.txt'")
demo

Die Datei 'x.txt' enthält schlicht "demo" als Inhalt.

Achtung: ich verwende Linux, Bash & PostgreSQL


Hi,
Danke für deine Antwort. Hab es leider nicht ganz verstanden.
Mein Ziel ist, die in der Tabelle als Pfad gespeicherten Bilder physikalisch zu verschieben.


Select QuellDateiMitPfad, Zieldatei from xx -- Die Abfrage selbst liefert mir im Feld QuellDateiMitPfad den StringPfad vom Bild. Diese soll in das angegebene Verzeichnis aus dem Feld "ZielDatei" kopiert werden.
Irgendwie hab ich es noch nicht raus, wie das Ergebnis des SQL Statements (Zeile für Zeile) in xp_cmdshell verwenden kann.
 
Mit osql ist es umständlich. Dort musst du die Rückgabe als Returnwert zurückgeben und dann verarbeiten.
osql Utility

Nutze die Powershell.
Invoke-Sqlcmd (sqlserver)

Code:
# Ausgabe des SQL Querys
> Invoke-Sqlcmd -Query "SELECT src, dst from TempTable" -ServerInstance "localhost" -Database SQLMON

src             dst
---             ---
C:\temp\foo.txt G:\

# Speichern in einer Variable
> $var = Invoke-Sqlcmd -Query "SELECT src, dst from TempTable" -ServerInstance "localhost" -Database SQLMON

# In der Variable kommt man an alle Einträge
> $var.src
C:\temp\foo.txt
> $var.dst
G:\

# Und man kann die Daten mittels Powershell direkt verschieben
> move-item $var.src $var.dst
 
Mit osql ist es umständlich. Dort musst du die Rückgabe als Returnwert zurückgeben und dann verarbeiten.
osql Utility

Nutze die Powershell.
Invoke-Sqlcmd (sqlserver)

Code:
# Ausgabe des SQL Querys
> Invoke-Sqlcmd -Query "SELECT src, dst from TempTable" -ServerInstance "localhost" -Database SQLMON

src             dst
---             ---
C:\temp\foo.txt G:\

# Speichern in einer Variable
> $var = Invoke-Sqlcmd -Query "SELECT src, dst from TempTable" -ServerInstance "localhost" -Database SQLMON

# In der Variable kommt man an alle Einträge
> $var.src
C:\temp\foo.txt
> $var.dst
G:\

# Und man kann die Daten mittels Powershell direkt verschieben
> move-item $var.src $var.dst
:) super, werde das gleich mal ausprobieren

lieben Dank
 
Werbung:
So ein riesen Problem ist xp_cmdshell nun auch nicht wenn nicht jeder Horst SQL Code auf dem System ausführt.

Ich hab das jetzt länger nicht gemacht aber hier mal der Code mit dem ich mal XML Dateien massenhaft importiert habe:
Code:
SELECT convert(XML,x.BulkColumn,2) AS data
FROM OPENROWSET(   BULK 'd:\Ordner\Datei.htm',
SINGLE_BLOB) AS x;
 
Zurück
Oben