1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

VALUES über Script aus CSV

Dieses Thema im Forum "MySQL" wurde erstellt von Raeven, 29 Dezember 2011.

  1. Raeven

    Raeven Aktiver Benutzer

    Salute,

    bin noch neu, deswegen entschuldigt, wenn es dämlich ist.

    Ich bin im Entwurfsstadium einer Datenbank und generiere
    daher mit einer Art von Fire and Hire meine Datenbank per
    SQL Script, da ich sie "noch" pausenlos umstelle, um den Be-
    dürfnissen gerecht zu werden.

    Gleichzeitig habe ich jedoch eine Menge an Datensätzen, die
    als XLS/OpenOffice Daten vorliegen, bevorzugt jedoch als CSV
    gepflegt werden.

    Was ich nun gern machen würde, wäre, über ein INSERT INTO
    STRUKTUR aus einer CSV meine Tabelle zu füllen.

    Gibt es da eine Möglichkeit via VALUES eine vorhandene Werte-
    tabelle extern ein zu lesen?

    Also ich mein, es geht ja hardcoded über VALUES, aber kann man
    sowas auch automatisiert aus ner CSV einlesen ?

    Chris
     
  2. Raeven

    Raeven Aktiver Benutzer

    In meinem konkreten Fall habe ich zwei CSV (XLS/OO) Dateien,
    die jeweils fußend auf dem sog. BHD (Brusthöhen Durchmesser,
    genauer, Baumdurchmesser in 130cm Höhe) jeweile a) das Alter,
    und b) die Baumhöhe (Nutzholz) angeben.

    Beides möchte ich vereint in einer art von Basistabele für weitere
    Untersuchungen zusammenfassen.
     
  3. ukulele

    ukulele Datenbank-Guru

    Ich bin mir nicht sicher ob es bei MySQL ein OPENROWSET Equivalent gibt, aber wenn dann kannst du per SQL Syntax die Werte auslesen und gleichzeitig schreiben, falls du das mit "automatisch" meinst. Z.B.:

    SELECT * INTO tabelle
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
    'Excel 8.0;HDR=YES;Database=C:\xxx.xls',
    'select * from [Tabellenblatt$]');

    Oder, mit etwas Anpassungsarbeit um Spaltennamen zu ändern...

    SELECT a AS b, c AS d... INTO tabelle
    FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
    'Excel 8.0;HDR=YES;Database=C:\xxx.xls',
    'select * from [Tabellenblatt$]');
     
  4. Raeven

    Raeven Aktiver Benutzer

    THX
    anhand Deiner Idee und entsprechend geänderter Suche, bin ich nun bei MySQL
    über LOAD DATA INFILE gestolpert, welches theoretisch das Problem lösen sollte.
     
  5. Raeven

    Raeven Aktiver Benutzer

    *grins*

    funktioniert hervorragend :)

    Meine CSV-Tabelle (beispielhaft ne kurze/einfach gewählt) liest sich wie
    "KRZL","NADEL","N_UMG","N_GER","N_LAT"
    "KI","1","Kiefer","Waldkiefer","Pinus sylvestris"
    ...

    Im SQL-Script macht folgendes alles nach Wunsch:

    ### start
    LOAD DATA INFILE '/USR/GIS/DATA/HW_V2/database/baumarten.csv'
    REPLACE
    INTO TABLE ba_idx
    FIELDS TERMINATED BY ',' ENCLOSED BY '"' # ist ein ' " ', da OpenOffice das so gern macht
    LINES TERMINATED BY '\r\n'
    IGNORE 1 LINES # 1-Zeile/Spaltenbeschriftung ignorieren
    (krzl,nadel,n_umg,n_ger,n_lat) # Zuordnung der Felder. In der MySQL Datenbank
    # ist Feld eins der primary key/unique
    ;
    ### end

    THX nochmal @ukulele

    Gruss
    Chris
     
    Walter gefällt das.
  6. ukulele

    ukulele Datenbank-Guru

    Ist ja auch nicht schwer, man muss nur wissen wo man suchen muss :) Hoffentlich gibts irgendwann einen neuen, erweiterten SQL Standard wo ganz viel vereinheitlicht wird...
     
    Walter gefällt das.

Diese Seite empfehlen