Ergebnis 1 bis 8 von 8

Thema: Tabulator in psql-Shell

  1. #1
    user unknown ist offline Neuer Benutzer
    Registriert seit
    23.04.2008
    Ort
    Berlin
    Beiträge
    18

    Standard Tabulator in psql-Shell

    Wenn ich übersichtliche SQL-Befehle schreibe, verwende ich dazu Tabulatoren, also so etwa:
    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 
        );
    (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.)
    Wenn ich das per cut'n'paste in meine psql-Shell eingebe (linux), dann werden die Tabulatoren getilgt, und es sieht so aus:
    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 
    );
    Ist das bekannt, ist es Absicht, kann man das irgendwie abstellen?
    Geändert von user unknown (31.07.2010 um 19:26 Uhr) Grund: layoutkommentar eingefügt

  2. #2
    murphy ist offline Erfahrener Benutzer
    Registriert seit
    19.08.2009
    Beiträge
    165

    Standard

    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...

  3. #3
    user unknown ist offline Neuer Benutzer
    Registriert seit
    23.04.2008
    Ort
    Berlin
    Beiträge
    18

    Standard

    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:
    Code:
    echo -e "SELECT\tstr FROM kunde" | psql kram
    oder auch die Ausgabe in eine Datei, und mit
    Code:
    psql -f q.sql kram

  4. #4
    murphy ist offline Erfahrener Benutzer
    Registriert seit
    19.08.2009
    Beiträge
    165

    Standard

    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:

    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=#
    Die Frage wäre also, mit welcher Console/Bash es auch bei dir funktioniert. Welches Linux mit welchem Windowmanager nutzt du denn?

  5. #5
    user unknown ist offline Neuer Benutzer
    Registriert seit
    23.04.2008
    Ort
    Berlin
    Beiträge
    18

    Standard

    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 -
    Code:
    echo "CREATE TABLE kunde (
        id         serial,
        geb        date 
        );"
    wird in der Shell ebenso zusammengepatscht wie bei psql. Und in der Scala-Console desgleichen.

    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

  6. #6
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    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

  7. #7
    user unknown ist offline Neuer Benutzer
    Registriert seit
    23.04.2008
    Ort
    Berlin
    Beiträge
    18

    Standard

    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 :)

  8. #8
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.020

    Standard

    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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum