SQL Ausgabe als .txt Datei funktioniert nur unsauber (Shell)

SweetyXO

Benutzer
Beiträge
5
Hallo Community,

als SQL Anfänger beherrsche ich bisher nur Grundkenntnisse.
Ich habe es nach langem ausprobieren geschafft, ein SQL Ergebnis in eine txt Datei abzuleiten, mit folgendem Shell befehl:

#mysql -h ip des servers -P 3306 -u user-p db name -p --password="passwort" --execute="select Spalten from Tabelle ">test.txt

mit ">test.txt" wird im aktuellen verzeichnis eine textdatei mit dem ergebnis der sql abfrage erstellt.
Allerdings sind hierbei die Spalten verschoben, sodass das ergebnis nicht sehr sauber aussieht. Hat jemand eine Idee wie man den Befehl ändern kann sodass man eine Formatierte tabelle erhält?

Ich bin dankbar für jede Hilfe!
 
Werbung:
*verschoben* weil Du entweder zum Anzeigen Tabs anders auflöst und/oder eine Schriftart verwendest, die unterschiedliche Zeichenbreiten verwendet.
 
Auf Konsolen Ebene ist das doch alles standard oder nicht?
Auf jeden fall soll es eine möglichkeit geben die spalten durch bestimmte zeichen zu trennen, was als ergebnis eine saubare ausgabe erstellt, allerdings habe ich keinen plan wie das genau geht, vielleicht ist da jemand schlauer als ich .. ? :)
 
Auf jeden fall soll es eine möglichkeit geben die spalten durch bestimmte zeichen zu trennen, was als ergebnis eine saubare ausgabe erstellt, allerdings habe ich keinen plan wie das genau geht, vielleicht ist da jemand schlauer als ich .. ?

Schon mal die man-page befragt? Ich hab hier nur psql, aber da kann man das setzen. Wie, das erklärt die man-page.
 
wenn ich das ergebnis in eine txt datei leite sieht das ergebnis zb so aus:

Spname spnummer sport
Ochsenknecht 1800001 Berlin

wünschenswert wäre natürlich eine ausgabe die ca so aussieht
Spname---------spnummer--sport
Ochsenknecht -1800001----Berlin

('-' als ersatz für leerzeichen da es sonst verschoben wird im forumbeitrag)

von mir aus auch mit feldtrennzeichen wie | oder so, ich finde aber nirgends das kommando wie man das machen soll
 
Hrm.

Code:
test=# create table sweety (spname text, spnummer text, sport text);
CREATE TABLE
test=*# insert into sweety values ('Ochsenknect','1800001','Berlin');
INSERT 0 1
test=*# commit;
COMMIT

und

Code:
akretschmer@akretschmer-desktop:~$ psql test -q -c 'select * from sweety'
  spname  | spnummer | sport  
-------------+----------+--------
 Ochsenknect | 1800001  | Berlin
(1 row)

akretschmer@akretschmer-desktop:~$ psql test -q -c 'select * from sweety' -A -F '|'
spname|spnummer|sport
Ochsenknect|1800001|Berlin
(1 row)
akretschmer@akretschmer-desktop:~$

oder auch:

Code:
akretschmer@akretschmer-desktop:~$ psql test -q -c 'copy sweety to stdout csv' -A -F '|'
Ochsenknect,1800001,Berlin
akretschmer@akretschmer-desktop:~$ psql test -q -c 'copy sweety to stdout csv header' -A -F '|'
spname,spnummer,sport
Ochsenknect,1800001,Berlin
akretschmer@akretschmer-desktop:~$


Die mysql-Hilfe sagt mir was über --raw, --table, vielleicht kommst ja damit weiter. Oder steigst halt auf eine bessere DB um ;-)
 
Werbung:
Zurück
Oben