VALUES über Script aus CSV

Raeven

Aktiver Benutzer
Beiträge
29
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
 
Werbung:

Raeven

Aktiver Benutzer
Beiträge
29
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.
 

ukulele

Datenbank-Guru
Beiträge
4.690
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$]');
 

Raeven

Aktiver Benutzer
Beiträge
29
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.
 

Raeven

Aktiver Benutzer
Beiträge
29
*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
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.690
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...
 
Oben