Dienstag, 19. Februar 2008

MySQL SELECT in Datei umleiten via INTO OUTFILE

Ich arbeite mometan mit einer großen Menge an Datensätzen, welche in einer MySQL-Datenbank gespeichert sind. Da ich diese mit einem regulären Ausdruck zerpflücke (PHP) und wieder in eine Tabelle schreibe, versuche ich die Belastung gering zu halten. Deshalb speichere ich die Ausgabe des SELECT in eine Datei.

MySQL-Ergebnis in Datei speichern

Im Prinzip geht das Speichern der Ausgabe in eine Datei recht einfach. MySQL bietet hierzu den Befehl INTO OUTFILE an. Das INTO OUTFILE hängt man an das Ende seines SQL-Query, gefolgt von dem Dateinamen.

Um das Ganze zu veranschaulichen gebe ich hier ein kleines Beispiel.

Beispiel: MySQL Dump in Datei

Download Code!

  1.  
  2. SELECT someColumn FROM `table`
  3. WHERE foo LIKE '%foo%'
  4. INTO OUTFILE 'c:/dbdump.txt'
  5.  

Falls der Dump schon existiert, wird dieser nicht überschrieben - aber man könnte einfach die aktuelle Uhrzeit als Unix-Timestamp mit einbeziehen um dieses Problem zu umgehen.

Bewertung: keine, 0 Stimme(n) 8601 Klicks
Datenbank
Von Mr.Foo in Datenbank am 19.02.08@20:13 Uhr

Trackbacks
Trackback für spezifische URI dieses Eintrags

Keine Trackbacks

8 Kommentare
Ansicht der Kommentare: (Linear | Verschachtelt)

Martin - #1 - 20.02.2008 11:37 - (Antwort)

Kleiner Rechtschreibfehler, der mir in Scripten auch jedes Mal passiert:
Spalte heißt auf englisch "column".

Mr. Foo - #1.1 - 20.02.2008 12:09 - (Antwort)

Danke :-)

Martin - #1.1.1 - 20.02.2008 12:34 - (Antwort)

Bitte.
Nur hast du dadurch den nächsten Fehler drin:
"COLUMN" ist ein SQL-Schlüsselwort.
Richtig wäre also "`column`"
(Sorry fürs Krümel-Kacken, aber so ist Programmieren...)

Mr. Foo - #1.1.1.1 - 20.02.2008 12:59 - (Antwort)

Mist, das kommt davon wenn man schnell einen Text einhackt und dazu noch ungeprüft ausgedachte Beispiele verwendet.

Martin, du hast natürlich Recht. Ich erinnere mich gerade an meinen Dozenten - der heisst übrigens auch Martin - der sagte einmal zu mir: "Benutze niemals Schlüsselwörter als Namen bei Datenbanken, damit handelst du dir nur Ärger ein. Das quoten vergisst man immer wieder mal..."

Trotzdem danke für die Hinweise. Und falls dir nochwas auffällt immer raus damit. Wenn man seine Fehler nicht kennt, kann man sie auch nicht verbessern.

emetiel - #1.2 - 17.11.2009 15:51 - (Antwort)

Hmm...

... an unserer DB ( SQL Server 2005 ) geht das leider nicht. Syntax error near...

Und dabei könnte ich genau soetwas dringend brauchen :-(

Mr. Foo - #1.2.1 - 17.11.2009 19:34 - (Antwort)

Probier mal das hier:

Download Code!

  1.  
  2. EXEC master..xp_cmdshell "osql -DB_HOST -E -dDB_NAME -Q""SELECT someColumn FROM `table` WHERE foo LIKE '%foo%'"" -o c:/dbdump.txt";

Tom - #2 - 07.09.2011 14:11 - (Antwort)

Krass,

so wie du das beschrieben hast, funktioniert das Statement wenigstens. In den offiziellen Referenzhandbüchern wird geschrieben, dass die Reihenfolge
SELECT ... INTO OUTFILE 'filename' FROM 'tablename';
lauten muss. Nachdem ich da immer einen Error bekam, musste ich lange suchen und bin mit deinem Artikel hier auf die Lösung gestoßen. Dafür gibt´s ein Dankeschön. :-)

Gruß Tom

Iruwen - #2.1 - 15.11.2011 13:37 - (Antwort)

Also so wie es im Handbuch steht funktioniert es auch.


Kommentar schreiben

Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.
Sie können [geshi lang=LANG][/lang] Tags verwenden um Quellcode abhängig von der gewählten Programmiersprache einzubinden
 
 

Mr. Foo

MySQL SELECT in Datei umleiten via INTO OUTFILE

  • Homepage

Suche

Kategorien

  • Android (2)
  • C-Sharp (4)
  • Datenbank (30)
  • Delphi (2)
  • Entwicklung (36)
  • Flash (5)
  • Games (10)
  • Gutscheine (4)
  • Hardware (14)
  • HTML CSS (16)
  • Internet (88)
  • Java (32)
  • Javascript (24)
  • Linkdump (9)
  • Linux (102)
  • Low-Level (10)
  • Lua (8)
  • Musik (9)
  • Netzwerk (25)
  • New World Order (109)
  • Perl (3)
  • PHP (130)
  • Magento (5)
  • Symfony (3)
  • Zend Framework (7)
  • Probleme und Lösungen (26)
  • Python (22)
  • Ressourcen (23)
  • Sicherheit (91)
  • Software (60)
  • Sonstiges (47)
  • Own Stuff (48)
  • Spass (46)
  • Technik / Wissenschaft (4)
  • Tips (15)
  • Weisheiten (17)
  • Windows (23)
  • Wort des Tages (15)


Alle Kategorien

Archive

  • Mai 2012
  • April 2012
  • März 2012
  • Das Neueste ...
  • Älteres ...

Abonnieren lohnt sich!

  • XML RSS 2.0 feed
  • ATOM/XML ATOM 1.0 feed
  • XML RSS 2.0 Kommentare

Tagcloud

Datenbank Entwicklung Internet Java Javascript Linux Lösung Netzwerk News New World Order PHP Problem Probleme und Lösungen Sicherheit Software Sonstiges Spass Tipp Update Windows

Beliebte Einträge

  • Magento ist scheisse (197)
  • Plugin-container.exe deaktivieren (107)
  • BWin Betrug und Abzocke bei Minigames? (65)
  • C compiler cannot create executables unter Debian (53)
  • Scheiss Linux - USB-Platte viel zu langsam (wenns mal funktioniert) (43)
  • Sicheres Kontaktformular mit PHP - Spam verhindern (37)
  • UML-Diagramme aus Java-Klassen generieren – Java2UML (28)
  • Es konnte keine TCP/IP-Verbindung mit dem Host hergestellt werden (28)
  • Option Bug im Internet Explorer bei Nutzung von innerHTML und Javascript (24)
  • Zend Studio - Javaw.exe lastet die CPU aus (24)

Kommentare

Hugo zu BWin Betrug und Abzocke bei Minigames?
So, 20.05.2012 12:25
ich habe mich gestern auf BWIN reg [...]
Ubuntu 12.04 zu The assembly mscorlib.dll was not found or could not be loaded.
Fr, 18.05.2012 17:11
Hat bei mir leider nicht geklappt. [...]
Oliver Riske zu Es konnte keine TCP/IP-Verbindung mit dem Host hergestellt werden
Di, 15.05.2012 20:38
Super Danke!
anon zu BWin Betrug und Abzocke bei Minigames?
Sa, 05.05.2012 18:43
ihr scheiss betrüger
Jürgen zu Unable to elevate error:1814 VLC Problem
Mi, 02.05.2012 16:54
So einfach ist es bei mir jedenfal [...]
 

Kontakt/Informationen