Wie exportieren / Dump eine MySQL-Tabelle in eine Textdatei mit den Feldnamen (auch bekannt als Kopf- oder Spaltennamen)

StackOverflow https://stackoverflow.com/questions/262924

  •  06-07-2019
  •  | 
  •  

Frage

In MySql Dolmetscher, ist es sehr einfach, einen Tisch auf dem Bildschirm auszugeben zusammen mit seinen Feldnamen.

Es scheint kein einfacher Weg, um einen Tisch zu einem Tab-delimted zu exportieren oder CSV-Ausgabedatei mit seinen Spaltenüberschriften.

Ich versuche, dies mit nur SQL oder die Linux-Befehlszeile zu tun, ohne ein Programm in einer anderen Sprache zu schreiben.

Danke

War es hilfreich?

Lösung

die Abfrage an den Kommandozeilen-Client Piping gibt eine Registerkarte getrennte Liste mit den Spaltennamen in der ersten Zeile

$ echo "select * from surveys limit 5" | mysql -uroot -pGandalf surveys
phone   param1  param2  param3  param4  p0      p1      p2      p3      audio4  code    time
XXXXXXXXX       2008-07-02      11:17:23        XXXXXXXX        SAT     -       -       -       -       -       ERROR   2008-07-02 12:18:32
XXXXXXXXX       2008-07-02      11:22:52        XXXXXXXX        SAT     -       -       -       -       -       COLGADO 2008-07-02 12:04:29
XXXXXXXXX       2008-07-02      11:41:29        XXXXXXXX        SAT     -       -       -       -       -       COLGADO 2008-07-02 12:07:22
XXXXXXXXX       2008-07-02      12:16:19        XXXXXXXX        SAT     1       1       1       9       XXXXXXXXX_4.wav     OK      2008-07-02 16:14:27
XXXXXXXXX       2008-07-02      08:21:25        XXXXXXXX        SAT     1       1       1       1       XXXXXXXXX_4.wav     OK      2008-07-02 12:29:40

Andere Tipps

Dieses kleine Skript sollte es tun:

- 1. Wählen Sie die Tabelle und die Ausgabedatei hier / sollte dies der einzige Eingang sein

select 'mytable' into @tableName;
select 'c://temp/test.csv' into @outputFile;

- 2. erhalten Sie die Spaltennamen in einem Format, das die Abfrage passt

select group_concat(concat("'",column_name, "'")) into @columnNames from information_schema.columns
where table_name=@tableName;

- 3. Bauen Sie die Abfrage

SET @query = CONCAT(
"select * from
((SELECT ",@columnNames,")
UNION
(SELECT * FROM `",@tableName,"`)) as a
INTO OUTFILE '", @outputFile, "'");

- 4. Führen Sie die Abfrage

PREPARE stmt FROM @query;
EXECUTE stmt;

ich erreicht, dass auf diese Weise:

echo "select * from table"| mysql database -B -udbuser -puser_passwd | sed s/\\t/,/g > query_output.csv

Die Option -B von mysql trennt die Spalten durch Tabulatoren, die in Kommas sed umgewandelt werden. Beachten Sie, dass die Header sind zu erzeugt.

Sie können dies tun, mit dem mysqldump Befehl. Werfen Sie einen Blick auf die --tab und --xml Optionen.

Ich habe ein Verfahren geschaffen, um den Export des Inhalts eine größeren Anzahl von Tabellen zu automatisieren Datei .csv von SELECT ... INTO OUTFILE verwenden. Bitte auf die folgenden verweisen, wenn Sie so etwas wie dieses benötigen haben

http://lifeboysays.wordpress.com/2012/06/23/mysql-how-to-export-data-to-csv-with-column-headers/ .

Es verwendet die Methode von cafe876 beschrieben, aber für einen oder eine ganze Reihe von Tabellen arbeiten, plus Sie können das Trennzeichen und Anführungszeichen gesetzt werden.

Ich habe den obigen Befehl und modifiziert nach meiner Anforderung.
Ich brauchte Passwörter Spalte aus der Wordpress MySQL-Datenbank in einer Textdatei zu erhalten, zu tun, dass ich die folgend unter Befehl

echo "select user_pass from wp_users"| mysql -uroot -proot wp_database > passwordList.txt
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top