jannik2018
Goto Top

CSV Import MySQL Tabelle

Hallo zussammen,

folgendes Problem ich möchte gerne inhalte aus einer CSV in eine Mysql Tabelle importieren

Tabellen Struktur

table_structure

Leider Skipped er alles Folgende Warnings tauchen auf

warnings_import

Weis jemand wie ich das Inteligent lösen kann

Inhalt CSV

csv_plain

Import Code

load data local infile '/home/jannik/Dokumente/SQL_CSV_Import/csvconfluencetest.csv'
into table cwd_user
fields terminated by ';'
optionally enclosed by '"'
escaped by '"'
lines terminated by '\n'
(user_name, display_name, email_address);

Content-ID: 618712

Url: https://administrator.de/contentid/618712

Ausgedruckt am: 22.11.2024 um 03:11 Uhr

godlie
godlie 04.11.2020 aktualisiert um 18:41:44 Uhr
Goto Top
Hallo,

die Fehlermeldung besagt ja eig. schon alles, dein csv Datei hat zu wenig Einträge für eine Row.

Dafür gibt es jetzt 2 Lösungen:

  • Entweder deine Daten auf den Stand der Tabelle bringen, sprich die restlichen Spatlen mit '', auffüllen
  • Deine Anweisung um das Columns Feld erweitern und die zu befüllenden Spalten angeben

LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata  
(col_name_or_user_var [, col_name_or_user_var] ...);
Jannik2018
Jannik2018 04.11.2020 aktualisiert um 18:57:14 Uhr
Goto Top
Zitat von @godlie:

Hallo,

die Fehlermeldung besagt ja eig. schon alles, dein csv Datei hat zu wenig Einträge für eine Row.

Dafür gibt es jetzt 2 Lösungen:

  • Entweder deine Daten auf den Stand der Tabelle bringen, sprich die restlichen Spatlen mit '', auffüllen
  • Deine Anweisung um das Columns Feld erweitern und die zu befüllenden Spalten angeben

> LOAD DATA INFILE 'persondata.txt' INTO TABLE persondata  
> (col_name_or_user_var [, col_name_or_user_var] ...);
> 
welche würdest du empfelen bitte bedenken dahinter steht eine webasierte Datenbankanwendung ?
godlie
godlie 04.11.2020 aktualisiert um 19:02:38 Uhr
Goto Top
Hallo,

bau dir das ganze einfach mal lokal nach und spiel ein wenig rum, ich kann dir da jetzt keine Empfehlung geben.

Schneller wirst mit LOAD Data und der Column Angaben sein, wobei die csv datei aufmachen in Excel oder sonstigen Leerspalten mit überschrift rein und als csv speichern geht eig. auch recht flott.
Jannik2018
Jannik2018 04.11.2020 aktualisiert um 20:21:03 Uhr
Goto Top
ok wie müsste dass dann aussehen ?
und mit Leerspalten in Excel sind noch viel mehr Fehler
godlie
godlie 04.11.2020 aktualisiert um 23:32:52 Uhr
Goto Top
Hallo,

ich denke du hast deine Daten nicht ganz im Griff, ich hab dir das mal zusammengebaut, so funktioniert das im groben unter Mysql 5.6:

Tabelle:
bildschirmfoto 2020-11-04 um 23.09.14

CSV:
bildschirmfoto 2020-11-04 um 23.10.19

Qry:
load data local infile '/Users/godlie/temp/test.csv'  
into table `loadinto`
fields terminated by ';'  
optionally enclosed by '"'  
escaped by '"'  
lines terminated by '\n'  
(user, mail, text); 

Ergebniss;:
bildschirmfoto 2020-11-04 um 23.11.22

Alternativ Aufbau CSV:
bildschirmfoto 2020-11-04 um 23.13.14

Ergebniss Alterniv CSV:
bildschirmfoto 2020-11-04 um 23.13.54

Ergebniss Alterniv Qry:
load data local infile '/Users/godlie/temp/test.csv'  
into table `loadinto`
fields terminated by ';'  
optionally enclosed by '"'  
escaped by '"'  
lines terminated by '\n'  

Die Null in der Spalte a, kommt vom dem "Leereintrag" zwischen den 2 Beistrichen, da diese Spalte auf INT gesetzt ist


Gegenprobe Große CSV Kleine Tabelle:

CSV:
bildschirmfoto 2020-11-04 um 23.13.14

Tabelle:
bildschirmfoto 2020-11-04 um 23.16.59

Qry:
load data local infile '/Users/marco/temp/test.csv'  
into table `loadinto`
fields terminated by ';'  
optionally enclosed by '"'  
escaped by '"'  
lines terminated by '\n'  
(user, mail, text); 

Ergebniss:
bildschirmfoto 2020-11-04 um 23.17.44

Das einzige was dir evtl. zum Verhängniss wird, du hast Spalten welche als NULL mit NO gekennzeichnit sind aber als Default NULL haben, somit kann es sein das du diese befüllen / auffüllen musst.

Komisches Design aber naja
mbehrens
mbehrens 04.11.2020 um 23:53:47 Uhr
Goto Top
Zitat von @Jannik2018:

folgendes Problem ich möchte gerne inhalte aus einer CSV in eine Mysql Tabelle importieren

Leider Skipped er alles Folgende Warnings tauchen auf

warnings_import

Weis jemand wie ich das Inteligent lösen kann

Mit zu wenig Quelldatei in der CSV und den nicht erfüllten foreign key Vorgaben in den anhängigen Tabellen, gar nicht.
godlie
godlie 05.11.2020 aktualisiert um 00:31:25 Uhr
Goto Top
Naja wie gesagt scheis Desing..... bezogen auf die oberen Warnungs *doestn have a default Value *

Für den Rest:

Musst du dir evtl. für die Foregin Keys etwas in deiner CSV hinterlegen, oder gar die Referenzen in den andern Tabellen erzeugen, damit du auf diese dich beziehen kannst.

ich frage mich langsam ob da nicht sinnvoller wäre
jemanden zu beauftragen, der dir ein Skriptchen macht ohne die DB zu kennen wird das mehr als mühsam