SQL Abfrageergebnis in Textdatei schreiben
ITSchlumpf (Level 1) - Jetzt verbinden
20.09.2011, aktualisiert 15:22 Uhr, 32271 Aufrufe, 13 Kommentare
Hallo,
ich möchte das Ergebnis einer SQL - Abfrage in eine Textdatei schreiben lassen. Die Abfrage besteht aus einem einfachen Select, mit welchem ich Überprüfe ob es Duplikate in einer Tabelle der Datenbank gibt.
Ich habe schonmal sqlcmd gesehen aber ich verstehe das nicht so ganz. Kann ich den befehl sqlcmd direkt in die Abfrage schreiben oder wie mache ich das?
Ich benutze MSSQQL Management Studio 2008.
Gruße
Schlumpf
ich möchte das Ergebnis einer SQL - Abfrage in eine Textdatei schreiben lassen. Die Abfrage besteht aus einem einfachen Select, mit welchem ich Überprüfe ob es Duplikate in einer Tabelle der Datenbank gibt.
Ich habe schonmal sqlcmd gesehen aber ich verstehe das nicht so ganz. Kann ich den befehl sqlcmd direkt in die Abfrage schreiben oder wie mache ich das?
Ich benutze MSSQQL Management Studio 2008.
Gruße
Schlumpf
13 Antworten
- LÖSUNG 32067 schreibt am 20.09.2011 um 10:19:37 Uhr
- LÖSUNG ITSchlumpf schreibt am 20.09.2011 um 10:23:26 Uhr
- LÖSUNG Logan000 schreibt am 20.09.2011 um 11:48:59 Uhr
- LÖSUNG ITSchlumpf schreibt am 20.09.2011 um 14:55:47 Uhr
- LÖSUNG Logan000 schreibt am 20.09.2011 um 15:12:20 Uhr
- LÖSUNG ITSchlumpf schreibt am 20.09.2011 um 15:15:26 Uhr
- LÖSUNG ITSchlumpf schreibt am 20.09.2011 um 15:23:44 Uhr
- LÖSUNG ITSchlumpf schreibt am 21.09.2011 um 08:37:26 Uhr
- LÖSUNG Biber schreibt am 21.09.2011 um 09:57:17 Uhr
- LÖSUNG ITSchlumpf schreibt am 21.09.2011 um 10:02:30 Uhr
- LÖSUNG ITSchlumpf schreibt am 21.09.2011 um 17:11:52 Uhr
- LÖSUNG Logan000 schreibt am 22.09.2011 um 12:29:16 Uhr
- LÖSUNG ITSchlumpf schreibt am 22.09.2011 um 12:42:35 Uhr
- LÖSUNG Logan000 schreibt am 22.09.2011 um 12:29:16 Uhr
- LÖSUNG ITSchlumpf schreibt am 21.09.2011 um 17:11:52 Uhr
- LÖSUNG ITSchlumpf schreibt am 21.09.2011 um 10:02:30 Uhr
- LÖSUNG Biber schreibt am 21.09.2011 um 09:57:17 Uhr
- LÖSUNG ITSchlumpf schreibt am 21.09.2011 um 08:37:26 Uhr
- LÖSUNG ITSchlumpf schreibt am 20.09.2011 um 15:23:44 Uhr
- LÖSUNG ITSchlumpf schreibt am 20.09.2011 um 15:15:26 Uhr
- LÖSUNG Logan000 schreibt am 20.09.2011 um 15:12:20 Uhr
- LÖSUNG ITSchlumpf schreibt am 20.09.2011 um 14:55:47 Uhr
- LÖSUNG Logan000 schreibt am 20.09.2011 um 11:48:59 Uhr
- LÖSUNG ITSchlumpf schreibt am 20.09.2011 um 10:23:26 Uhr
LÖSUNG 20.09.2011 um 10:19 Uhr
LÖSUNG 20.09.2011 um 10:23 Uhr
Gibt es auch eine andere Möglichkeit die Daten auszulagern. Sowas wie bei Batch files z.B. >> textdatei.txt oder einen TSQL befehl der sowas unterstützt?
Kann ich das irgendwie in mein SQL dann einbauen oder muss ich das separat starten?
Danke für die schnelle Antwort.
[Edit]
Habe gerade gelesen bei Oracle geht das mit Spool dateiname, geht das so ähnlich bei MSSQL?
Kann ich das irgendwie in mein SQL dann einbauen oder muss ich das separat starten?
Danke für die schnelle Antwort.
[Edit]
Habe gerade gelesen bei Oracle geht das mit Spool dateiname, geht das so ähnlich bei MSSQL?
LÖSUNG 20.09.2011 um 11:48 Uhr
Moin Moin
Gruß L
Sowas wie bei Batch files z.B. >> textdatei.txt
Das wäre die sqlcmd Variante aus Kommandozeile (Batch) heraus....der einen TSQL befehl der sowas unterstützt
Wenn es denn unbeding aus SQL heraus sein muss, dann soltest du dir mal xp_cmdshell und bcp anschauen.Gruß L
LÖSUNG 20.09.2011 um 14:55 Uhr
Noch schnell was anderes, ich schreibe das Ergebnis in eine E-Mail welche per sp_send_mail vom SQL-Server versendet wird.
Jetzt möchte ich in den Body das Ergebnis und einen Text schreiben. Wie kann ich das Ergebnis dort einfügen.
wenn ich 'Text bla bla' + Variable ; mache bekomme ich nen Fehler "Falsche Syntax in der nähe von +".
Habt ihr da auf die schnelle grad was?
Gruß
Schlumpf
Jetzt möchte ich in den Body das Ergebnis und einen Text schreiben. Wie kann ich das Ergebnis dort einfügen.
wenn ich 'Text bla bla' + Variable ; mache bekomme ich nen Fehler "Falsche Syntax in der nähe von +".
Habt ihr da auf die schnelle grad was?
Gruß
Schlumpf
LÖSUNG 20.09.2011 um 15:12 Uhr
LÖSUNG 20.09.2011 um 15:15 Uhr
LÖSUNG 20.09.2011 um 15:23 Uhr
LÖSUNG 21.09.2011 um 08:37 Uhr
Also ich habe jetzt mal diesen Quellcode zusammen gebastelt. Dieser Funktioniert aber noch nicht ganz. Kann mir jemand sagen, wie ich es hinbekommen, dass der ausgeführte SQL-Befehl in der Variablen steht?? Also Ergebnis >> Variable.
Gruß Schlumpf
[Edit] Habs gelöst. Musste ein execute noch ausgeführt werden. Kann mir trotzdem jemand sagen, ob das klappen könnte bzw. wo noch mein Fehler ist im Bereich ">> \\Rechnername......". Weil die Datei wird nicht erstellt.
Declare @bcpCommand nvarchar(4000);
Declare @cmd nvarchar(4000);
SET @bcpCommand = 'select count(*) from IBS2009.dbo.Teileliste where Barcode = 123456 )';
SET @cmd = 'echo '+@bcpCommand+' >> \\Rechnername\D:\test.txt -S IP -U Domäne\User -P Passwort"';
EXEC master..xp_cmdshell @cmd ,no_output;
[Edit] Habs gelöst. Musste ein execute noch ausgeführt werden. Kann mir trotzdem jemand sagen, ob das klappen könnte bzw. wo noch mein Fehler ist im Bereich ">> \\Rechnername......". Weil die Datei wird nicht erstellt.
LÖSUNG 21.09.2011 um 09:57 Uhr
LÖSUNG 21.09.2011 um 10:02 Uhr
Hoi Biber,
ja des hab ich mitlerweile geklärt danke trotzdem.
Der Pfad ">>\Rechnername\C$\test.txt".
Jetzt bekomme ich allerdings die Fehlermeldung "Kein Zugriff". Liegt wohl irgendwie an der User Berechtigung. Weißt du, ob und wenn ja wie ich dem echo oder dem xp_cmdshell Befehl Benutzername und Passwort mitgeben kann?
Gruß
Schlumpf
ja des hab ich mitlerweile geklärt danke trotzdem.
Der Pfad ">>\Rechnername\C$\test.txt".
Jetzt bekomme ich allerdings die Fehlermeldung "Kein Zugriff". Liegt wohl irgendwie an der User Berechtigung. Weißt du, ob und wenn ja wie ich dem echo oder dem xp_cmdshell Befehl Benutzername und Passwort mitgeben kann?
Gruß
Schlumpf
LÖSUNG 21.09.2011 um 17:11 Uhr
So hab das Problem jetzt soweit gelöst. Jetzt fehlt mir nur noch, dass ich die Dateien in das Textfile schreiben kann, ohne das er die bisherigen Einträge überschreibt. Wenn jemandem dazu noch was einfällt, immer her damit.
Vielen dank aufjedenfall für die Hilfe.
Gruß
Schlumpf
[Edit] Leider funktioniert der Befehl jetzt nicht mehr bei mir. Jetzt bekomme ich eine Fehlermeldung, dass die BCP-Hostdatendatei nicht mehr gefunden werden kann.
bcp "Select * From BCPTest.dbo.t1" queryout \\%PC%\C$\SQL-Test\test.txt -U User -P PW -S Server -c
Gruß
Schlumpf
[Edit] Leider funktioniert der Befehl jetzt nicht mehr bei mir. Jetzt bekomme ich eine Fehlermeldung, dass die BCP-Hostdatendatei nicht mehr gefunden werden kann.
LÖSUNG 22.09.2011 um 12:29 Uhr
Moin Moin
z.B.
Gruß L
ohne das er die bisherigen Einträge überschreibt. Wenn jemandem dazu noch was einfällt, immer her damit.
Keine Ahnung ob das mit bcp klappt, aber das könntest du doch mit einer weiteren Zeile Batch erledigen.z.B.
bcp "Select * From BCPTest.dbo.t1" queryout \\%PC%\C$\SQL-Test\test.txt -U User -P PW -S Server -c
type \\%PC%\C$\SQL-Test\test.txt>>\\%PC%\C$\SQL-Test\testAll.txt
LÖSUNG 22.09.2011 um 12:42 Uhr