Big TXT import

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mark H

Mark H

07/01/2012 10:27:04
Quote Anchor link
Hallo,

Ik heb een vraag en ben er al een tijdje mee bezig.
Ik krijg van een klant elke 3 weken een txt file van 180MB met 1062301 regels.

Deze moet ik dan importeren in mijn database (MYSQL) alleen eerst deed ik gewoon via Excel als CSV opslaan, maar nu heeft de TXT file een limiet bereikt en kan ik hem niet meer importeren in excel dus zal ik een script moeten gaan schrijven waarmee ik een bestand van 180MB regel voor regel naar mijn MYSQL server kan sturen.

De server waar ik het bestand op wil importeren is volledig in eigen beheer dus ik kan limieten van upload en dergelijke aanpassen.

Dit is ongeveer de opbouw van een regel:
"xxx";"xxx";;;"xxx";"xxx";"xxx";;;"xxx";

Wie kan mij helpen met het maken van zoon script.

Ik zat te denken het bestand kan ik makkelijk met FTP op de server zetten, en dat er dan een script is wat het bestand split in files van 25 mb. Daarna een script wat deze (nieuwe) bestanden dan regel per regel in de database importeert.

Mark.
 
PHP hulp

PHP hulp

27/11/2024 19:49:46
 
- Ariën  -
Beheerder

- Ariën -

07/01/2012 10:46:20
Quote Anchor link
Via de commandline heb je geen limieten. Je zou dan bijv een cronjob kunnen overwegen.
 
Mark H

Mark H

07/01/2012 10:49:24
Quote Anchor link
Ja, dat begrijp ik maar het gaat mij vooral op het script, daar kom ik maar niet uit.
 
Noppes Homeland

Noppes Homeland

07/01/2012 10:52:03
Quote Anchor link
Uiteraard ga je niet regel voor regel verwerken met PHP!

Zie http://dev.mysql.com/doc/refman/5.1/en/load-data.html
en bedenk dan wat eventuele vervolgstapen moeten zijn om in geval dat data verschillende tabellen in moet de stappen kunnen zijn.

En ja er komt in het geheel geen php bij om de hoek kijken.
 
Mark H

Mark H

07/01/2012 11:55:01
Quote Anchor link
Ik ga eens even kijken of ik het voor elkaar krijg met dat script. Jullie horen nog van mij, en andere suggesties zijn altijd welkom.

Toevoeging op 07/01/2012 12:18:56:

Vraagje;

Mijn eerste regels van mijn txt bestand is zo:

"1";"2";"3";"4";"5";"6";"7";"8";"9";"10";"11";"12";"13";"14";"15";"16";"17";"18";"19";"20"

Ik gebruik dit om te importeren:
LOAD DATA LOCAL INFILE '".$localfile."' INTO TABLE `mark` FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n'

Nu krijg ik in mijn database het volgende:
Ik krijg in elke regel in de database in vakje 20 de waarde van 20 en de waarde van 1 te staan. wat doe ik verkeerd ik verwacht iets van Lines terminated by


Toevoeging op 07/01/2012 14:05:42:

Probleem opgelost: LINES TERMINATED BY '\n' verandert in LINES TERMINATED BY '\r\n'

Nu nog een vraag kun je in je query zeggen dat als 1 veld een bepaalde waarde bevat hij deze vervangt voor iets anders.

Toevoeging op 07/01/2012 14:33:17:

Dat lukt ook al, met:
UPDATE `mark` SET `veld1` = REPLACE(`veld1`, 'Orderbaar', 'sts')

nu nog een update query die werkt met een WHERE.


Toevoeging op 07/01/2012 14:45:01:

Sorry een update query met replace functie met een where,
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.