Import 3zeiliger Datensatz aus CSV?

Mike-Fu-RLP

Benutzer
Beiträge
6
Hallo,


ich habe eine Frage zum Import in MySQL aus CSV‘s.

Der normale Import-Filter in php-my-Admin genügt hierfür offenbar nicht oder ich nutze ihn nicht voll aus.


Meine CSV (Navi Fahrtenbuch)besteht aus Datensätzen die jeweils 3 Zeilen umfassen, also durch ein CR/LF beendet werden.


Jeder Datensatz besteht aus 3 Zeilen, diese würde ich gerne in der Datenbank in einer Zeile zusammenführen.

Problem 1:
Wie importiere ich mehrzeilige Datensätze in eine Datenbankzeile?



Problem 2:

Der Datenschreiber hat ab und zu kleine Fehler und es steht nur ein Teil des Tripels in der CSV Quelle.


TechInfo
Die Zeilen eines Datensatz beginnen jeweils mit
Punkte
Start
Ende

Jeder Datensatz wird mit einer Leerzeile abgeschlossen/ vom Nachfolger getrennt.

Muster korrekte Datensätze und Muster defekte Datensätze versuche ich als Datei anzuhängen.
 

Anhänge

  • db_car_muster.csv.txt
    1,9 KB · Aufrufe: 3
Werbung:
.. und hier noch ein Muster wie eine Fehlerhafte CSV aussieht bei der die Software mittendrin mal wieder aufgegeben hat; es ist nur ein Teil eines Datensatzes und der nächste klebt direkt dahinter.

in diesem Fall hier wäre das

Punkte

Start --- "Ende fehlt","Leerzeile fehlt"

Punkte

Start

Ende


.. hier die Königsfrage: wie übergehe ich beim Import solche Fehler bzw importiere nur "heile" Daten?
 

Anhänge

  • db_car_fehlermuster.csv.txt
    1,7 KB · Aufrufe: 3
Das ist keine CSV. Du wirst Dir was basteln müssen, um das in eine DB zu bekommen. Etwas mit perl, oder awk oder so ...
 
:( naja es ist "pseudo-CSV"

- das beginnt schon damit dass der Feldtrenner TAB ist und damit das C in CSV gelogen wäre ;)

- und ja eine CSV sollte eine Zeile je Datensatz haben

.. ich hatte auf ein wenig mehr "digitale Magie" gehofft .. aber ok wenn es keinen weg um das coden drum herum gibt muss ich wohl oder übel mal ein bissl Schulbank drücken und mich einlesen

Danke dennoch!

LG

M
 
Werbung:
Richtig.

Code:
test=*# \h copy
Anweisung:  COPY
Beschreibung: kopiert Daten zwischen einer Datei und einer Tabelle
Syntax:
COPY Tabellenname [ ( Spaltenname [, ...] ) ]
  FROM { 'Dateiname' | PROGRAM 'Befehl' | STDIN }
  [ [ WITH ] ( Option [, ...] ) ]

COPY { Tabellenname [ ( Spaltenname [, ...] ) ] | ( Anfrage ) }
  TO { 'Dateiname' | PROGRAM 'Befehl' | STDOUT }
  [ [ WITH ] ( Option [, ...] ) ]

wobei Option eine der folgenden sein kann:

  FORMAT Formatname
  OIDS [ boolean ]
  FREEZE [ boolean ]
  DELIMITER 'Trennzeichen'
  NULL 'Null-Zeichenkette'
  HEADER [ boolean ]
  QUOTE 'Quote-Zeichen'
  ESCAPE 'Escape-Zeichen'
  FORCE_QUOTE { ( Spaltenname [, ...] ) | * }
  FORCE_NOT_NULL ( Spaltenname [, ...] )
  FORCE_NULL ( Spaltenname [, ...] )
  ENCODING 'Kodierungsname'

test=*#

Beachtet bitte 'Delimiter'. Das hilft aber hier nicht wirklich weiter...
 
Zurück
Oben