Hallo Experten,
Ich habe eine Adabas Datenbank und möchte Werte die ich aus einer CSV Datei auslese sofort in die Datenbank einlesen.Array wird zu gross dabei.Mit welchem Befehl kann ich dies am Besten tun? Ich möchte jede Zeile als Datensatz + einen zusätzlichen Wert einlesen
Vielen Dank für jeden Tip
Heike
Ich habe eine Adabas Datenbank und möchte Werte die ich aus
einer CSV Datei auslese sofort in die Datenbank einlesen.
dann ist als erstes sicherzustellen, dass dein php mit adabas sprechen kann.
in der ausgabe von phpinfo() steht ein abschnitt der config-optionen bei der kompilation deines php. wenn da nix von adabas drin steht, muss php neu kompiliert und installiert werden.
Array wird zu gross dabei.Mit welchem Befehl kann ich dies am Besten
tun? Ich möchte jede Zeile als Datensatz + einen zusätzlichen
Wert einlesen
das ist keine frage - „mit welchem befehl…?“.
das zeilenweise einlesen hattest du schon weiter unten - oder ist das noch nciht geklärt?
vor dem einlesen musst du mit odbc_connect eine verbindung zum datenbanksystem etablieren.
die datenbank selber ist schon angelegt?
beim zeilenweisen auslesen, nimsmt du die gelesenen werte um ein huebsches sql-statement zu bauen, und statt der ausgabe, oder zusaetzlich zur ausgabe sendest du mit odbc_exec http://www.php-homepage.de/manual/ref.odbc.php die werte an das db-system.
wie weit bist du schon, und/oder wo kommst du nicht weiter?
Ich habe eine Adabas Datenbank und möchte Werte die ich aus
einer CSV Datei auslese sofort in die Datenbank einlesen.Array
wird zu gross dabei.Mit welchem Befehl kann ich dies am Besten
tun? Ich möchte jede Zeile als Datensatz + einen zusätzlichen
Wert einlesen
was mir gerade noch einfaellt, hast du die moeglichkeit in deine adabas sql-dumps einzuspielen? dann brauchst du naemlich nciht den direkten, aber komplizierteren weg ueber odbc_* nicht zu gehen, sondern baust nur einen filter, der aus csv sql macht…
Hallo doc,
das zeilenweise einlesen hattest du schon weiter unten - oder
ist das noch nicht geklärt?
ich habe dies doch über ein Array realisiert und das wird meiner Ansicht nach zu gross.Brauche also zu viel Zeit dafür.
die datenbank selber ist schon angelegt?
hab ich schon getan.hat eine Spalte mehr als in der eingelesenen CSV-Datei vorhanden.Deshalb hatte ich weiter unten dies auch mit der Ausgabe realisiert um zu sehen, ob die Übergabe des neuen Parameters klappt
beim zeilenweisen auslesen, nimsmt du die gelesenen werte um
ein huebsches sql-statement zu bauen, und statt der ausgabe,
oder zusaetzlich zur ausgabe sendest du mit odbc_exec
http://www.php-homepage.de/manual/ref.odbc.php die werte an
das db-system.
das ist wahrscheinlich der Tip den ich brauchte. Kenne mich weder mit PHP noch mit odbc_exec sonderlich gut aus
wie weit bist du schon, und/oder wo kommst du nicht weiter?
habe das Gefühl, dass mir einfach der Programmablauf nicht klar ist.
vielen Dank für Deine Geduld
Heike
wie weit bist du schon, und/oder wo kommst du nicht weiter?
habe das Gefühl, dass mir einfach der Programmablauf nicht
klar ist.
ok, pseudocode zum gedankenstrukturieren:
<?php //verbindung zum adabas$dbh = odbc\_connect( ...); // //file zum lesen oeffnen $fh = fopen("csvdatei",'r'); // //zeilenweise while (!feof($fh)) { //zeiole aufbereitn $zeile = fgets($fh); //liest zeilenweise, siehe manual $zeile = ereg\_replace('[\r\n]+',$zeile) //zeilenumbruchamendeentfernen // //felder aufbereitn $felder = explode('csv-trennzeichen',$zeile); // //sqlstatement aufbereiten $sql = "insert into tabelle set "; $swl .= "feldname1='".$felder[0]."'"; $sql .= ", feldname1='".$felder[1]."'"; ... $sql .= ", feldnamex='".dein extravalue."'"; // print "$sql\n"; //sqlstatement ausfuehren odbc\_exec($dbh,$sqk) // } // //alles zumachen fclose($fh); odbc\_close($dbh); // ?\> prinzipiell, zum programmieren lernen: - versuch dir vorzustellen, was du erreichen willst, - abstrahiere das auf "maschinelle vorgänge" - ueberleg dir dann rueckwaerts, welche schritte dazu notwendig sind - ueberleg dir fuer welchen schritt du welche daten brauchst - schau ins manual, welcher schritt mit welchem befehl zu realisieren wenn du keinen befehl findest, hast du entweder den schritt nicht weit genug abstrahiert, oder nciht richtig im manual geschaut.
und wie gesagt, bevor du anfaengst, schau ob dein php ueberhaupt mit adabas ueber odbc sprechen kann!
Hallo doc,
also das war die beste Hilfe, die ich bekommen konnte.
Werde mich jetzt dran setzen und endlich mal strukturiert programmieren können
Ich danke Dir Du hast mir sehr geholfen
Heike
Ach ja das mit ODBC ist schon eingerichtet