Antworten auf deine Fragen:
Neues Thema erstellen

Mehrere csv Dateien per script in mysql

Hunter68

Noch nicht viel geschrieben

Ich bin auf der Suche nach einem script mit dem man mehr als eine csv Datei in mysql laden kann.

Eine einzelne Datei per script in die Datenbank zu laden ist kein problem, aber ich bekomme die dateien aus verschiedene Abteilungen und müßte dann für jeden Ladevorgang ein script anstossen.
Daher wäre es viel leichter alle Dateien aus einem Verzeichnis laden zu können.

Danke
 

MegaAdi

Freak

AW: Mehrere csv Dateien per script in mysql

Pack dir die Dateien alle in EIN Verzeichnis.
Du lässt jetzt mit PHP jede Datei aus dem ordner einzeln auslesen.
du kannst dafür readdir() verwenden.
Dann packst du das ganze in eine schleife und schon haste alles auf einmal =)
Ich hoffe ich konnte dir den richtigen Denkanstoß geben.
 

Hunter68

Noch nicht viel geschrieben

AW: Mehrere csv Dateien per script in mysql

Ich kriege das nicht hin.
Finde einfach nicht die richtige syntax um meinen Einzelupload mit readdir zu erweitern
 

F0RC3

Noch nicht viel geschrieben

AW: Mehrere csv Dateien per script in mysql

hast du dir den Link von MegaAdi angesehen? (php.net manual)
dort sind 2 Beispiele die eigentlich alles klären sollten?

wo genau ist denn dein Problem?
 

Hunter68

Noch nicht viel geschrieben

AW: Mehrere csv Dateien per script in mysql

Sorry, das habe ich nicht gesehen, das seine Antwort verlinkt war.
Werde das morgen früh sofort testen und anschließend berichten.

Wie meinst du das mit meinem Problem?
Was ich damit machen möchte? Oder warum es bei mir nicht funktioniert?
 

MegaAdi

Freak

AW: Mehrere csv Dateien per script in mysql

poste mal den Code den du schon hast, dann kann man da mal n bischen feilen.

Gruß Adrian
 

Hunter68

Noch nicht viel geschrieben

AW: Mehrere csv Dateien per script in mysql

Den Code an dem ich mich versucht habe, habe ich im Büro. Da komme ich erst morgen dran.
Hier habe ich nur den Code um eine Datei einzulesen.
Den kann ich aber gerne hier posten.
 

MegaAdi

Freak

AW: Mehrere csv Dateien per script in mysql

Möchtest du alle Dateien hochladen, oder alle Dateien in eine Datenbank legen? Weil das sind 2 verschiedene Paar Schuhe.

Gruß Adrian
 

Hunter68

Noch nicht viel geschrieben

AW: Mehrere csv Dateien per script in mysql

Ich möchte alle Dateien die in einem Verzeichnis liegen in eine Datenbank laden.
Hintergrund ist das verschiedene Abteilungen die Daten für mich, mehrmals am Tag, in dieses Verzeichnis ablegen. Und so kann ich dann die Daten dort aufgreifen und in die Datenbank schieben.

Gruß Willi
 

MegaAdi

Freak

AW: Mehrere csv Dateien per script in mysql

Also Abt1 bis ABt4 bringen jeweils eine Datei mit
ID | Name | Anzahl | Datum mit (machen wir mal fiktiv) und diese 4 Datensätze willst du in die Datenbank "Ablage" mit gleichnamigen Spalten?!
Is doch recht einfach:

Code:
if ($handle = opendir('.')) {
    while (false !== ($file = readdir($handle))) {  // Alle Datein aus dem aktuellen Verzeichnis einzeln auselen
        if ($file != "." && $file != ".." && is_file($file)) { // Nur Dateien auslesen
            $sql = "LOAD DATA LOCAL INFILE '" . $file . "' // SQL für den Datenimport erzeugen
                     INTO TABLE ablage 
                     FIELDS TERMINATED BY ',' 
                     LINES TERMINATED BY '\n' 
                     (id, name, anzahl, datum)";
            mysql_query($sql) or die ("Es ist ein Fehler aufgetreten: " mysql_errorno()": " mysql_error); //SQL-Abfrage ausführen und eventuelle Fehler ausgeben.
        }
    }
}

Ich glaub ich hab alles richtig gemacht. Wenn noch jmd Fehler findet pls korrigieren. Bin noch ned janz fit =)

Gruß Adrian

EDIT: Sollten die 4 Abteilungen in 4 Tabellen kommen kannst du den Dateinamen mit explode() am Punkt (da ja datei.csv) Trennen und dann INTO TABLE " . $file[0] . ". Angenommen die Datei heist rechnungswesen.csv dann kommt des alles in die tabelle rechnungswesen.

Wenn du noch Fragen hast melde dich einfach nochmal.
 
Zuletzt bearbeitet:

Hunter68

Noch nicht viel geschrieben

AW: Mehrere csv Dateien per script in mysql

Das war schon vollkommen korrekt, das alle Dateien der Abteilungen in eine DB kommen.
Klappt auch bislang wunderbar....aaaber
1. klappt das nur wenn die Datei, die für den upload zuständig ist, in dem selben Verzeichnis steht wie die Dateien der Abteilungen die in die DB sollen.
2. Wird dann folglich auch die upload.php (da im gleichen Verzeichnis) in die DB gepackt.

Besteht die Möglichkeit entweder die upload Datei in einem anderen Verzeichnis zu haben oder vllt noch besser - ich kann vorgeben, das vom script nur csv bzw txt files angefasst werden sollen?
 

MegaAdi

Freak

AW: Mehrere csv Dateien per script in mysql

erstelle einfach ein neues Verzeichnis (z.B. csv) und dann arbeitest du mit opendir('./csv/') dann haste wirklich nur die CSV-Dateien.

Gruß Adrian
 

sokie

Mod | Web

AW: Mehrere csv Dateien per script in mysql

Besteht die Möglichkeit entweder die upload Datei in einem anderen Verzeichnis zu haben oder vllt noch besser - ich kann vorgeben, das vom script nur csv bzw txt files angefasst werden sollen?

auf jeden fall.
so eine Möglichkeit hast du, wenn du es wirklich umständlich per opendir() machst so:
PHP:
$dir = "beispielverzeichnisname";
$dh = opendir($dir);
while ($verz = readdir($dh)){
  if(stristr($verz,".csv")){
  //hier die verarbeitung der csv Dateien
  }
}
sehr viel einfacher wäre es allerdings mit der funktion glob():
PHP:
$csvArray = glob("beispielverzeichnis/*.csv");
foreach ($csvArray as $datei){
  //Verarbeitung der csv-dateien...;
}
weil man mit glob() schon beim Lesen der dateinamen in ein Array nur die Dateien, die dem Suchmuster *.csv entsprechen berücksichtigt.
 

MegaAdi

Freak

AW: Mehrere csv Dateien per script in mysql

stimmt. glob is da wirklich viel einfacher zum Handhaben. Keine Ahnung warum ich immer glob() vergesse und anstatt dessen readdir verwende (auch in eigenen Projekten).

Vielleicht merk ichs mir irgend wann *g* (auch wenn ich nicht dran glaube).
 

Hunter68

Noch nicht viel geschrieben

AW: Mehrere csv Dateien per script in mysql

Ich habe beide Versionen ausprobiert, doch jedemal bleibe ich beim gleichen Fehler hängen.
$csvArray = glob("C:/xampp/htdocs/upload/*.csv");
foreach ($csvArray as $datei){

$sql = "LOAD DATA LOCAL INFILE
INTO TABLE pingdaten
FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n'
(version,device,port,ip_adresse,mac_adresse,host,last_seen,datum)";
if (mysql_query($sql))
{
echo "$heute: Die Daten wurden in die Tabelle geschrieben<br>";
}
else
{
echo mysql_errno() . ": " . mysql_error() . "\n";
("Es ist ein Fehler aufgetreten:"); //SQL-Abfrage ausführen und eventuelle Fehler ausgeben.
}
}

Das wird wahrscheinlich nur ein dämlicher Fehler sein, aber ich sehe ihn nicht.
 

MegaAdi

Freak

AW: Mehrere csv Dateien per script in mysql

host,l ast_seen,datum
da is ein Leerzeichen zwischen dem l und ast_seen!!
Welche Fehlermeldung spuckt denn mysql / php aus?

Ich gehe mal davon aus dass du $heute weiter Oben schon deklarierst oder?!

Gruß Adrian
 

Hunter68

Noch nicht viel geschrieben

AW: Mehrere csv Dateien per script in mysql

Das Leerzeichen ist nur ein Anzeigefehler im eigentlichen Script ist das richtig.
$heute ist deklariert. Da es aber hier nicht zum Problem gehört, habe ich es weggelassen.

Hier die Meldung:
1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTO TABLE pingdaten FIELDS TERMINATED BY ';' ' at line 2

line 2 bezieht sich auf das reine SQL Statement, warum nicht Zeile 23 ausgegeben wird weis ich nicht
 

MegaAdi

Freak

AW: Mehrere csv Dateien per script in mysql

PHP:
$sql = "LOAD DATA LOCAL INFILE";
$sql .= "INTO TABLE pingdaten ";
$sql .= "FIELDS TERMINATED BY ';'"; 
$sql .= "LINES TERMINATED BY '\n'";

schreib die SQL-Abfrage mal so! Dann müsste er dir glaub ich die genaue Zeile ausspucken.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben