Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Abfrageergebnis in einen String umwandeln (CSV-Format)

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von ands71, 8 Juni 2020.

  1. ands71

    ands71 Benutzer

    Hallo zusammen,

    gibt es eine einfache Möglichkeit, das Ergebnis einer Abfrage in einen einzigen String umzuwandeln?

    Beispiel: Meine Tabelle sieht so aus:

    +-------+--------+---------+
    | Kunde | Name | Ort |
    +-------+--------+---------+
    | 1000 | Maier | Hamburg |
    | 2000 | Müller | Berlin |
    | 3000 | Schulze| München |
    +-------+--------+---------+


    Diese möchte ich umwandeln in folgenden Text:

    Kunde;Name;Ort\n1000;Maier;Hamburg\n2000;Müller;Berlin\n3000;Schulze;München

    Vorab vielen Dank für eure Hilfe
    Andreas
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Ja:

    Code:
    test=*# create table ands71 (kunde text, name text, ort text);
    CREATE TABLE
    test=*# copy ands71 from stdin;
    Enter data to be copied followed by a newline.
    End with a backslash and a period on a line by itself, or an EOF signal.
    >> 1000   maier   hamburg
    >> 2000   müller   berlin
    >> 3000   schulze   münchen
    >> \.
    COPY 3
    test=*# copy ands71 to stdout csv delimiter ';';
    1000;maier;hamburg
    2000;müller;berlin
    3000;schulze;münchen
    test=*# copy ands71 to stdout csv header delimiter ';';
    kunde;name;ort
    1000;maier;hamburg
    2000;müller;berlin
    3000;schulze;münchen
    test=*#
    
    Beim COPY-Befehl kannst auch statt stdout einen Dateinamen angeben, dann landet das dort.
     
  3. ands71

    ands71 Benutzer

    Vielen erst mal.

    Kann ich diesen Output auch in ein Tabellenfeld schreiben? In etwa so:

    INSERT INTO tbl_ouput (csv)
    ... (hier dann die Tabelle umgewandelt in ein Textfeld) ...
     
  4. akretschmer

    akretschmer Datenbank-Guru

    wozu benötigt man dies?

    Schnellschuß: in CSV speichern und von da einlesen. Ich erkennen aber nicht den Nutzen.
     
  5. ands71

    ands71 Benutzer

    Das ist eine Krückenlösung ;)
    In der Umgebung, in der die Anwendung ausgeführt wird, kann ich keine Daten in eine Datei exportieren. Daher möchte ich den Inhalt der CSV-Datei erst mal in einem Tabellenfeld festhalten. Von dort kann ich es über die Zwischenablage in eine Datei übertragen.
     
  6. akretschmer

    akretschmer Datenbank-Guru

    *facepalm*

    Ändere die Umgebung. MySQL kennt irgend was mit LOAD DATA oder so, sowohl auf DB-Server als auch lokal.
     
  7. ands71

    ands71 Benutzer

    Der LOAD DATA bringt mir nichts, wenn ich schon keine Export-Datei erzeugen kann. Notfalls muss ich mir überlegen, ob ich doch dafür eine Funktion schreibe...
     
  8. akretschmer

    akretschmer Datenbank-Guru

    load data hat eine local - Option.
     
  9. Dukel

    Dukel Datenbank-Guru

    Aus Export directly from MySQL to CSV
    Code:
    SELECT field1, field2
    FROM table1
    INTO OUTFILE '/path/to/file.csv'
    FIELDS TERMINATED BY ','
    ENCLOSED BY '"'
    FIELDS ESCAPED BY '\'
    LINES TERMINATED BY '\n';
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden