Autor Zpráva
gardener
Profil
Zdravím, mám problém s importem dat do DB, chtel bych pro import z CSV využít SQL fci
LOAD DATA LOCAL INFILE, ale zrejme asi zadávám špatne parametry, jelikož se mi nedarí import rozumne zprovoznit.

kod vypada takto:
$vlozeni=mysql_query("LOAD DATA LOCAL INFILE 'pcobc.csv' INTO TABLE pcs FIELDS TERMINATED BY ','LINES TERMINATED BY '\r\n' (obec,psc)");
if (!$vlozeni){

exit('Nepodrilo se importovat dta.');
}

ríkám si, že chyba by mohla být v LINES terminated by, ale netuším co bych jiného mel uvést jelikož to je odrádkováno
standartne.

Díky za každou radu
gardener
Profil
Nikdo netuší, co by mohlo být špatně?
Kajman_
Profil *
A mysql_error() vypíše co?
gardener
Profil
Právě že nic..
gardener
Profil
Mě se právě líbí ta jednoduchost té fce jinak bych to řešil složiteji pomocí while a pak rozdělit pomocí expolode.
Ale pokud je na to přímo fce, tak proč to řešit složitějc? Jen škoda, že se jí moc nechce spolupracovat:)
gardener
Profil
Tak změna: omlouvám se, překlepl jsem se a MYSQL ERROR ZNÍ takto:
File 'pcobc.csv' not found (Errcode: 2)

Což mi nedává opět smysl, jelikož soubor pcobc.csv se nachází přímo v rootu společně se skriptem.
nightfish
Profil
uveď u toho souboru absolutní cestu (a nezapomeň oslashovat všechny případná zpětná lomítka)
gardener
Profil
Takže fajn, už je to zprovozněno..prvně jsme to vyzkoušel přímo jako dotaz v PHPMyAdmin a když jsem to rozchodil tam, tak jako Php příkaz a kupodivu to šlo i bez escejpování.

Teď by mne už jenom zajímalo jak vybrat jenom určité sloupce, ale to snad bude v manuálu?

řešení tedy vypadá takto:

$vlozeni=mysql_unbuffered_query ("LOAD DATA INFILE 'C:/xampp/htdocs/PSC/data.csv' INTO TABLE psc
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;//To zalezi podle toho, zda nechceme vkladat..napr id sloupcu
");
Kajman_
Profil *
jak vybrat jenom určité sloupce, ale to snad bude v manuálu?

Ano bude to tam. Ve výčtu sloupčků tabulky dáte nějakou proměnnou tam, kde se má sloupeček ignorovat.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: