Seite 1 von 1
csv von externem server automatisch in mysql-db laden
Verfasst: 16.06.2005, 13:39
von schorsch
also ich habe eine csv-datei mit ca. 20mb größe. diese liegt natürlich auf einem anderen server und ich möchte gerne ein automatisches update einrichten.
bisher habe ich disen befehl verwendet:
Code: Alles auswählen
$sql = "LOAD DATA LOCAL INFILE '$db_File' REPLACE INTO TABLE ".$db_Table." FIELDS TERMINATED BY '$db_Terminated'";
leider geht der nur, wenn die datei auf dem server leigt.
kann man den befehl so umschreiben, dass er auch mit externen dateien funktioniert?
oder wie kann man die datei am besten selbst mit nem php script erst downloaden und dann den obigen befehl verwenden?
hab das auch schon mit copy() probiert, aber dann kam die fehlermeldung
"Maximale Ausführungszeit erreicht - Script wurde abgebrochen."
wahrscheinlich ist die datei mit 20mb zu groß.
wer kann mir helfen?
gruss
schorsch
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
Verfasst: 17.06.2005, 08:49
von auftragslinker
hast du zugriff auf cronjobs? dann würde ich nen cronjobs einrichten,
der täglich um z.B. 17:55
wget
https://username:passwort@www.csv-serve ... ur/csv.csv
um die datei rüberzuziehen und dann um 18:00
php /home/www/benutzerpfad/sql_einbinden.php
mit dem von dir genannten befehl.
das passwort für die csv einfach per htaccess einrichten. wenn windows-server: selber schuld
edit: ups hab übersehen, dass die file 20MB groß ist. Vielleicht solltest du 10 Min Pause dazwischen lassen

csv von externem server automatisch in mysql-db laden
Verfasst: 17.06.2005, 10:42
von schorsch
ok danke. nur irgendwas stimmt da nicht. es funktioniert zwar jetzt mit dem wget befehl eine datei in der größ runterzuladen, aber ich will mir die von affilinet holen und da sieht der automatische downloadlink leider etwas anders aus. es kommt immer eine fast leere datei mit dem inhalt "<br>Credentials not OK." an. mien befehl sieht so aus:
<? system("wget -t 1 -P /home/blabla/ -O /home/blabla/datei.csv -
https://partners.affili.net/partners/as ... listID=xxx"); ?>
mache ich zb einen befehl der art:
wget
https://www.domain.de/datei.csv
dann bekomme ich diese in sekundenschnelle
weiss jemand wie man das problem lösen kann.
ich werde ja nicht der einzige sein der sich von affilinet ne csv holt
gruss
schorsch
Verfasst: 17.06.2005, 13:41
von auftragslinker
csv von externem server automatisch in mysql-db laden
Verfasst: 18.06.2005, 04:03
von schorsch
hilft mir leider nicht weiter. ich nutze schon diesen automatischen downloadlink aber er funzt leider nicht
gruss
schorsch
Re: csv von externem server automatisch in mysql-db laden
Verfasst: 18.06.2005, 06:40
von 800XE
schorsch hat geschrieben:
hab das auch schon mit copy() probiert, aber dann kam die fehlermeldung
"Maximale Ausführungszeit erreicht - Script wurde abgebrochen."
wahrscheinlich ist die datei mit 20mb zu groß.
wie automatisch machst du das?
macht es dein Server ganz allaeine oder ruft du eine deiner Seiten auf die das dann anstöst?
Also das mit dem Timeout, wenn du es manuell anstöst ...
... hatte ich auch.
Ich hatte ein kleines Formular wo ich die Affili URL reinkopiert habe und dann auf meinen Spcae gepostet, danach hat ein Script bei mir die Datei bei Affili geladen
Also kein Download und bei mir upload
Das problem mit dem Timeout ist nicht unser Webserver sondern der Browser der denkt das die Verbindung weg ist.
Deswegen keinen copy, sondern stückschenweise kopieren und zwischendrin immer einen Space an den Browser senden, dann klappt es
Code: Alles auswählen
if ( $_POST[doit]=="csv UpDate" )
{
$shop = $REQUEST_FOLDER = $_POST[shop];
$csvsrc= $_POST[src];
echo("<br>#download csv<br>#$_POST[src]#<br>");
$handle_src=fopen( $_POST[src], "rb");
$handle_des=fopen("update.csv", "wb");
$size=$len=1;$ts_start=time();
while($size)
{
$buf = fread ($handle_src, 800000);
fwrite($handle_des, $buf);
$size = strlen($buf); $len+=$size;
echo("_"); // hier etwas für den Browser gegen den Timeout
}
fclose($handle_des);
fclose($handle_src);
echo("<br>#".(int)($len/1024)." KBytes Updatet in ".(time()-$ts_start)." secunden");
}
Genau mein Problem. Werd aber nicht schlau draus.
Verfasst: 20.06.2005, 11:14
von Enipak
Leider bin ich in php nicht sehr versiert. Habt ihr jetzt einen Lösung um eine
Affili URL auf einem Webserver abzulegen ?
Wenn ja könnt ihr mal das ganze Script posten und beschreiben wie man es anpasst ?
Gruß Eni
csv von externem server automatisch in mysql-db laden
Verfasst: 20.06.2005, 13:25
von schorsch
also bei mir funktioniert es jetzt in der form:
<? system("wget -t 1 -P /home/blabla/ -O /home/blabla/datei.csv '
https://partners.affili.net/partners/as ... listID=xxx'"); ?>
zumindest um die datei auf den server zu bekommen.
Verfasst: 20.06.2005, 13:39
von auftragslinker
also haben nur die ' gefehlt? wie ich sowas hasse
da sucht man stundenlang nach dem fehler, nur um festzustellen, dass eine klammer oder ein häkchen fehlt...
csv von externem server automatisch in mysql-db laden
Verfasst: 20.06.2005, 23:35
von schorsch
ja ich habe auch ewig gesucht bis mir aufgefallen ist, dass da doch noch was fehlt

naja hauptsache es funktioniert jetzt
gruss
schorsch