Laden...

SQL-Tabellendaten von SQL2005 in Textfile abspeichern möglich?

Erstellt von oehrle vor 14 Jahren Letzter Beitrag vor 14 Jahren 715 Views
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 14 Jahren
SQL-Tabellendaten von SQL2005 in Textfile abspeichern möglich?

verwendetes Datenbanksystem: <SQL Server 2005>

Hallo, ist es möglich über einen SQL-Befehl die DAten einer Tabelle oder einer ABfrage direkt in ein Textfile z leiten, so wie das auch bei Access geht?

T
433 Beiträge seit 2006
vor 14 Jahren

Hi oehrle,

schon Google befragt http://www.google.de/search?q=sql+2005+write+file ?

1.564 Beiträge seit 2007
vor 14 Jahren

Direkt aus SQL nicht. Es gibt aber diverse Möglichkeiten:

* BCP utility
* Integration Services
* Import/Export Wizard
* SQLCMD
* Management Studio im SQLCMD Mode
* Linked Server
* Adhoc Remote Connections
... kann sein dass ich noch was vergessen habe.

Ohne weitere Informationen kann ich nicht mehr sagen.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 14 Jahren

Ja, ich nutze die "SQL Server Managment Studio Express". Wie kann ich das dort realisieren? Oder was gibts noch einfacheres?

T
433 Beiträge seit 2006
vor 14 Jahren
  1. hit aus mein oben geposteten Link liefert eine komplette Lösung auf Basis T-SQL OLE die sehr einfach zu implementieren ist.

Aber wir können ja hier noch ein bisschen drüber reden ....

1.564 Beiträge seit 2007
vor 14 Jahren

Mit dem Express Studio kenne ich mich nicht wirklich aus, aber im normalen Studio kannst du z.B. über Menü "Query -> Results to -> Results to File" (englische Version) oder CTRL+SHIFT+F einstellen, dass alle Ergebnisse in ein Textfiele umgeleitet werden.

Zusätzlich kann man auch über Menü "Query -> SQLCMD" den sqlcmd-Mode aktivieren und dann die Ausgabe über ":OUT" umleiten:

:OUT D:\Temp\Test\test.txt
SELECT
      SonstWas
   from MyTable

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

1.564 Beiträge seit 2007
vor 14 Jahren

Hallo Tom

  1. hit aus mein oben geposteten Link liefert eine komplette Lösung auf Basis T-SQL OLE die sehr einfach zu implementieren ist.

Nix für ungut, Phil Factor hat wirklich was auf dem Kasten (ich hatte schon persönlich mit ihm zu tun). Aber ich finde den Weg über "sp_OA...", also Active-X über T-SQL, seit SQL Server 2005 antiquiert und sollte nicht mehr verwendet werden. Die andere Lösung über die Temp-Table funktioniert nur dann, wenn es sich nicht um zu viele Daten handelt.

Ich würde für so was eigentlich immer BCP verwenden.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

T
433 Beiträge seit 2006
vor 14 Jahren

Ich habe auch dazu geschrieben, dass dies eine Lösung ist die einfach zu implementieren ist.

Und ich wüsste ehrlich gesagt nicht wieso man diese Methode nicht verwenden sollte, wenn man nicht an die von dir genannten Begrenzungen oder auf Geschwindgeitsproblemen stösst.

Bloss weil Technologie voranschreitet und neue Wege anbietet, heisst das nicht das alte bewährte Wege nicht mehr genommen werden sollten.

Aber selbstverständlich bieten sich noch eine Vielzahl anderer Möglichkeiten an.

Gruß,
Tom

1.564 Beiträge seit 2007
vor 14 Jahren

Hallo Tom

Bloss weil Technologie voranschreitet und neue Wege anbietet, heisst das nicht das alte bewährte Wege nicht mehr genommen werden sollten.

Naja, die Verwendung von Active-X in TSQL ist ja wirklich umständlich und außerdem recht fehleranfällig. Bis SQL Server 2000 gab's für manche Sache einfach keinen anderen Weg (mal abgesehen von Extended Procedures für die Mutigen). Seit SQL Server 2005 sollte man solche Sachen aber über SQLCLR abhandeln (die Meinung vertritt Phil übrigens mittlerweile auch 😉 ).

BTW: Ich habe ja nicht gesagt, dass es schlecht ist, weil es alt ist. Sonst hätte ich sicher kein BCP vorgeschlagen 😉.

Und ich wüsste ehrlich gesagt nicht wieso man diese Methode nicht verwenden sollte, wenn man nicht an die von dir genannten Begrenzungen oder auf Geschwindgeitsproblemen stösst.

Grundsätzlich gilt natürlich "never change a running system". Nachdem oehrle allerdings gerade erst nach einer Methode sucht, und somit sicher noch nix "running" hat, würde ich eben von "sp_OA" Ansätzen abraten.

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 14 Jahren

Mit dem Express Studio kenne ich mich nicht wirklich aus, aber im normalen Studio kannst du z.B. über Menü "Query -> Results to -> Results to File" (englische Version) oder CTRL+SHIFT+F einstellen, dass alle Ergebnisse in ein Textfiele umgeleitet werden.

Zusätzlich kann man auch über Menü "Query -> SQLCMD" den sqlcmd-Mode aktivieren und dann die Ausgabe über ":OUT" umleiten:

:OUT D:\Temp\Test\test.txt  
SELECT  
      SonstWas  
   from MyTable  
  

Sorry, habe das mal getestet.

😮UT C:\Test.txt
SELECT Winkel1, Kantenradius, Scheibendurchmesser, Kunde
FROM AlleDaten

Funzt bei mir nicht, bekomme Fehlermeldung. Arbeite mit der Vollversion von VStudio 2008.
Why it doesn't work ??

1.564 Beiträge seit 2007
vor 14 Jahren

Liegt dann wohl am Express Studio.

Dann würde ich BCP verwenden. Ist ein Kommandozeilentool welches auch bei Express-Editions mitgeliefert wird.

Hier die Referenz (unten sind auch einige Beispiele zu finden):
BCP utility

Im SSMS kannst du BCP einfach über xp_cmdshell aufrufen. (xp_cmdshell muss evtl. über sp_configure aktiviert werden)

Grüße
Flo

Blog: Things about Software Architecture, .NET development and SQL Server
Twitter
Google+

Je mehr ich weiß, desto mehr weiß ich was ich noch nicht weiß.