ugrás a tartalomhoz

Adatbázisba való importálás

angelo · 2007. Május. 26. (Szo), 09.54
Sziasztok!

Keresek egy módszert kb 500.000 insert importálására a mysql() adatbázisba, az adatok excel táblázaba vannak amit tudnék importálni csv-be is.

Nincs csak phpmyadmin es php kód futtatási lehetöségem a szerveren(a szerver nem lokális).

Eddig megoldások:
- LOAD DATA LOCAL INFILE ...
- php-böl manuális import csv fileokból(félig automatikus, limitálom kb 10.000 vagy 100.000 insertre) s utanna a php scriptet ujra lefuttatom

Van ötletek hogy lehetne megoldani (a legjobb, leggyorsabb megoldas kene)?
Egy teljesen automatikus import kéne.

Egy olyan megoldást kéne ami:
- teljesen automatikus
- nem terheli le teljesen szervert(vagy csak ideiglenes)
- nagyon gyors
- a timout vagy kapcsolatmegszakítást elkerüli a szerver felöl
- az insert-ek számátol függetlenül lehet importálni
- ha egy progi megcsinálja az is jó lenne

Válaszaitokat előre is köszönöm.
 
1

Kiegészítés

angelo · 2007. Május. 26. (Szo), 09.56
Az excel-be levö adatok tartalmaznak vesszöt is ...
2

Remote

janoszen · 2007. Május. 26. (Szo), 10.27
Írj egy PHP scriptet, ami fogad query-ket (persze csak azonosítás után) és írj egy lokális PHP programot, ami megtápolja a szervert vele. Ezután csinálj egy lokális SQL dumpot, amit soronként megetetsz a szerverrel a lokális programodon keresztül. Így nem probléma az idő, csak figyelni kell, hogy ne rohadjon le és tudja, hol tartott ha mégis.

Az ötletet lehet tovább fejleszteni. Adott esetben várakozást is tehetsz bele, hogy ne vinnyogjon a rendszergazda.
5

Köszi a tippet

angelo · 2007. Május. 26. (Szo), 14.24
Köszi a tippet, kipróbalom ha a bigdump-os módszer nem jön be.
6

nem a legjobb

Hodicska Gergely · 2007. Május. 28. (H), 12.32
Ez igy talan a legrosszabb megoldas, amit csak csinalni lehet foleg hatekonysag szempontjabol. Mondjuk lehetett volna tobb info arrol, hogy pl. milyen tablatipusrol van szo, illetve hogy kell-e foglalkozni DB constraintek megsertesevel (duplicate key, foreign key stb.). Elobbi eseten is ott van pl. az INSERT eseten hasznalhato ON DUPLICATE KEY UPDATE kitetel, de ezen constraint kezelese is kikapcsolahato, ha nem kell szamitani kulcs utkozesre. Utobbi eseten erdekes lehet, hogy ha tuti nem okoz gondot, akkor erdemes a muvelet elejen a FOREIGN KEY CHECK-et kikapcsolni. Szinten erdemes lehet az inexeket eldobi, majd ujbol letrehozni a muvelet vegeztevel. Szinten ha a feldolgozast valasztja az ember, akkor mindebfelekeppen bluk inserteket erdemes generalni, lenyegesen gyorsabbak, mint a kulonalo insertek.

Eredeti kerdezotol: mi volt a gond a LOAD DATA LOCAL INFILE megoldassal. Kifejezetten erre talaltak ki. Mondjuk egy olyan megoldast is el tudok kepzelni, hogy egy masik tablaba huzod be az adatokat, majd onnan egy SELECT...INSERT paranccsal mozgatod a megfelelo tablaba.


Üdv,
Felhő
7

Bulk insert

janoszen · 2007. Május. 28. (H), 14.43
Ha belefut a max packet size-ba a program, akkor a bulk insertekkel bajok lesznek.

A LOAD DATA LOCAL INFILE módszer meg osztott tárhelyeken legtöbbször nem működik...

Ha teljes dumpot tölt be szűz adatbázisba, akkor ez elvileg működik. Nyilván, a szép megoldás nem ez, de néha az ember kényszerül nem szép megoldásokra.
8

Valasz

angelo · 2007. Május. 30. (Sze), 14.25
A megoldas tablatipustol fuggetlen kene legyen, de ezen esetben MyISAM-rol van szo.


Mint ahogy Proclub is emlitette:

"A LOAD DATA LOCAL INFILE módszer meg osztott tárhelyeken legtöbbször nem működik..."
A load data ... tenleg erre volt kitalava, de erdekelt vagyok egy mas megoldasban.

Ha ezt a megoldast valasztom, akkor magatol erhetodo, hogy az index-eket kikapcsolom.
3

BigDump

minczerl · 2007. Május. 26. (Szo), 14.15
Próbáld meg a BigDump nevű progival.
http://www.tutorial.hu/node/196 (Van már frissebb verzió is)
4

Jó tipp

angelo · 2007. Május. 26. (Szo), 14.23
Köszönöm, kiprobálom mindenképp.