Wenn ich übersichtliche SQL-Befehle schreibe, verwende ich dazu Tabulatoren, also so etwa:
(Die Forensettings mit geiziger Tabulatorweite macht, dass es hier auch schäpp aussieht - mit der richtigen Tabweite (8) sieht es auch richtig schön übereinander aus.)Code:CREATE TABLE kunde ( id serial, name character varying (20), vorname character varying (20), email character varying (50), tel character varying (150), str character varying (50), plz character varying (10), ort character varying (50), geb date );
Wenn ich das per cut'n'paste in meine psql-Shell eingebe (linux), dann werden die Tabulatoren getilgt, und es sieht so aus:
Ist das bekannt, ist es Absicht, kann man das irgendwie abstellen?Code:CREATE TABLE kunde ( id serial, namecharacter varying (20), vornamecharacter varying (20), emailcharacter varying (50), telcharacter varying (150), strcharacter varying (50), plzcharacter varying (10), ortcharacter varying (50), gebdate );
Geändert von user unknown (31.07.2010 um 19:26 Uhr) Grund: layoutkommentar eingefügt
Wen stört das?
Wenn ich per cut'n'paste etwas in die Konsole paste und das dann ausführe, ist mir das Layout egal...
Ob man das hier im Forum verändern kann/möchte, muss der Foren-Admin entscheiden. In der psql-Konsole wohl nicht...
Mich stört das - steht das nicht implizit da, daß es mich stört? Wieso sonst würde ich darüber schreiben?
Die Query funktioniert ja nicht mehr, wenn man es pastet, und die Tabs verschluckt werden.
Das Forenlayout ist nicht mein Thema, das war nur eine Anmerkung, weil es so schief aussieht.
So klappt es übrigens:oder auch die Ausgabe in eine Datei, und mitCode:echo -e "SELECT\tstr FROM kunde" | psql kramCode:psql -f q.sql kram
Okay, ich dachte, dich stört das Layout...
Ich glaube aber nicht, dass man die Tabs beim einfügen erhalten kann.
Bleiben diese denn erhalten, wenn du deine Query einfach in die Bash/Console einfügst? Ich denke, dass das vielmehr eine OS-Sache als eine PG- oder psql-Sache ist.
Hab das gerade mal mit deiner Query unter WinXP getestet, da geht's so, wie du es willst. Das ist der Output:
Die Frage wäre also, mit welcher Console/Bash es auch bei dir funktioniert. Welches Linux mit welchem Windowmanager nutzt du denn?Code:C:\Dokumente und Einstellungen\murphy>psql -d kontor -U postgres Passwort für Benutzer postgres: psql (8.4.3) Warnung: Konsolencodeseite (850) unterscheidet sich von der Windows- Codeseite (1252). 8-Bit-Zeichen funktionieren möglicherweise nicht richtig. Einzelheiten finden Sie auf der psql-Handbuchseite unter »Notes for Windows users«. Geben Sie »help« für Hilfe ein. kontor=# CREATE TABLE kunde ( kontor(# id serial, kontor(# name character varying (20), kontor(# vorname character varying (20), kontor(# email character varying (50), kontor(# tel character varying (150), kontor(# str character varying (50), kontor(# plz character varying (10), kontor(# ort character varying (50), kontor(# geb date kontor(# ); NOTICE: CREATE TABLE will create implicit sequence "kunde_id_seq" for serial column "kunde.id" CREATE TABLE kontor=#
Eine interessante Antwort.
Meine spontane Reaktion war, "was soll denn die darunterliegende Shell damit zu tun haben? So eine blöde Idee!" aber war dann doch klug genug meiner eigenen Klugheit zu misstrauen, und siehe da -
wird in der Shell ebenso zusammengepatscht wie bei psql. Und in der Scala-Console desgleichen.Code:echo "CREATE TABLE kunde ( id serial, geb date );"
Ob das ein Effekt von auto-completition ist? Oder ob es an xfterm4 liegt, der grafischen Hülle für die ganzen Shells?
Da habe ich jetzt ein wenig was zum recherchieren/ausprobieren. Andere Shells, Shellsettings, bash-completiton.
Vielen Dank, schon mal.
Geändert von user unknown (01.08.2010 um 01:22 Uhr) Grund: typo
Ich denke mal, das liegt an der Autovervollständigung. Durch die gepasteten Tabs versucht die Shell an der Stelle die Zeichen zu vervollständigen.
Aus diesem Grund habe ich mir angewöhnt, in Code - speziell in SQL - lieber Leerzeichen zu verwenden.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Ja, ich mußte das mal in einer Hau-ruck-Aktion umfassend durchtesten, um mich davon zu überzeugen. Mit 4 Shells (bash, scala, psql, dash), mit verschiedenen Editoren als Quelle (gedit, scite, mousepad), mit verschiedenen grafischen Wrappern (gnome-terminal, xfterm4, uxterm, xterm) und Änderungen an der .bashrc. Außer der Verwendung der dash war nichts effektiv, die wohl keine Autovervollständigung hat.
So viel empirischer Evidenz muss ich mich wohl beugen, und das vernünftige glauben: das Einfügen der Tabs mit cut-n-paste entspricht schlicht dem Anschlagen der Tabtaste - fertig.
Und so bleibt mir wohl wenig, außer einen eigenen Editor für Sql zu verwenden, den ich auf Blanks statt Tab stelle.
Geändert von user unknown (01.08.2010 um 22:40 Uhr) Grund: (bash, scala, psql, dash) sind 4 Shells, nicht 3 :)
Nun ja, in psql kannst du Dateien auch per \i einlesen.
Bei Copy'N'Paste darfst du allerdings davon ausgehen, dass die Shell keine Ahnung davon hat, dass du etwas anderes als "Tab" meinst.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen