Stránka: 1 z 1
| [ Príspevkov: 25 ] | |
Autor | Správa |
---|
Registrovaný: 24.11.09 Prihlásený: 21.05.20 Príspevky: 195 Témy: 75 | 75 |
Dobry den,
ako mam prosim importovat CSV súbor do MySQL databazy?
Vytvoril som v databaze tabulky ale neviem ako tam dostat data z CSV?
Dakujem.
|
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 | 30 Bydlisko: Bratislava |
Ak ide o jednorázové importovanie, tak phpmyadmin, alebo adminer (alebo čokolvek iné) umožňujú import z CSV.
_________________ Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme. |
|
Registrovaný: 24.11.09 Prihlásený: 21.05.20 Príspevky: 195 Témy: 75 | 75 |
Phpmyadmin tam o tom viem ale ako vlozim tie spravne stlpce z CSV do presnej tabulky v databaze?
D.
|
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 | 30 Bydlisko: Bratislava |
Akože nič v zlom, ale keby si si na skúšku exportoval nejakú tabuľku do CSV a potom importoval, tak by si zistil, ako na to.
Rovnako som to urobil ja teraz - pri importe z CSV sa nepoužívajú žiadne názvy stĺpcov, proste sa len importujú dáta. Tabuľke dá nejaký generický názov (napr. table 1), stĺpcom tiež (COL 1 aťd.).
Ak budeš importovať do už existujúcej tabuľky s pripravenými stĺpcami a stĺpce v CSV budú sedieť, tak ti ich importuje správne.
_________________ Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme. |
|
Registrovaný: 24.11.09 Prihlásený: 21.05.20 Príspevky: 195 Témy: 75 | 75 |
Ano, to viemm vsimol som si to v Phpmyadmine.
Ako to ide prosim poriesit cez PHP, z weboveho rozhrania?
Neviem presne ako ma vypadat PHP a ako to ma celkom fungovat.
Dakujem.
|
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 | 30 Bydlisko: Bratislava |
Vieš aká je štruktúra CSV? Ak nie, tak si ho otvor, zistíš. Ak hej, tak myslím, že musíš vedieť, ako tie dáta uložiť.
PHP má niekoľko funkcií na prácu s csv, námatkovo napr. http://php.net/manual/en/function.fgetcsv.php, ale spracovanie csv je naozaj jednoduchá záležitosť.
_________________ Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme. |
|
Registrovaný: 24.11.09 Prihlásený: 21.05.20 Príspevky: 195 Témy: 75 | 75 |
Štrukuru CSV poznam ale neviem ako na cely princip funkcii.
Na webe by som chcel nacitat CSV a zapisat do databazy.
1. Musim mat domena.sk/import.php - kde bude moznost pridania suboru CSV
2. Dalej neviem ako na to
Dakujem.
|
|
Registrovaný: 27.08.09 Prihlásený: 08.07.15 Príspevky: 169 Témy: 46 | 46 |
Na PHP.net stačí scrollovať nižšie a nájdeš toto:
Kód: function csv_file_to_mysql_table($source_file, $target_table, $max_line_length=10000) { if (($handle = fopen("$source_file", "r")) !== FALSE) { $columns = fgetcsv($handle, $max_line_length, ","); foreach ($columns as &$column) { $column = str_replace(".","",$column); } $insert_query_prefix = "INSERT INTO $target_table (".join(",",$columns).")\nVALUES"; while (($data = fgetcsv($handle, $max_line_length, ",")) !== FALSE) { while (count($data)<count($columns)) array_push($data, NULL); $query = "$insert_query_prefix (".join(",",quote_all_array($data)).");"; mysql_query($query); } fclose($handle); } }
|
|
Registrovaný: 24.11.09 Prihlásený: 21.05.20 Príspevky: 195 Témy: 75 | 75 |
Ano, je tam toho viac ale ked som skusil aj tento kod kopirovat do php a potom nacitat cez browser tak nic.
Dakujem.
|
|
Registrovaný: 27.08.09 Prihlásený: 08.07.15 Príspevky: 169 Témy: 46 | 46 |
Ak si to iba nakopíroval do .php suboru a spustil tak samozreme sa nic nestalo...
pod funckiu treba pridať:
Kód: mysql_connect('lcoalhost', 'root', 'pass') or die(mysql_error()); mysql_select_db('nazov_db'); csv_file_to_mysql_table('cesta/suboru', 'nazov_tabulky');
Do tela funckie mozes pridat este riadok, do if aby si videl či sa vobec dostal do podmienky Kód: echo "Súbor sa úspešne načítal";
|
|
Registrovaný: 24.11.09 Prihlásený: 21.05.20 Príspevky: 195 Témy: 75 | 75 |
Kód: mysql_connect('lcoalhost', 'root', 'pass') or die(mysql_error()); mysql_select_db('nazov_db'); csv_file_to_mysql_table('...........................................', 'nazov_tabulky');
......... tu ma byt cesta k CSV? (ked tam dam CSV tak ostane cista obrazovka a ked tam dam php tak vypise subor sa nacital ale v DB nic nieje)
Dakujem.
|
|
Registrovaný: 27.08.09 Prihlásený: 08.07.15 Príspevky: 169 Témy: 46 | 46 |
Takže, testoval som to a tu je vysledok:
Kód: <?php
function csv_file_to_mysql_table($source_file, $target_table, $max_line_length=10000) { if (($handle = fopen("$source_file", "r")) !== FALSE) { echo "pridane"; $columns = fgetcsv($handle, $max_line_length, ","); foreach ($columns as &$column) { $column = str_replace(".","",$column); } $insert_query_prefix = "INSERT INTO $target_table (".join(",",$columns).")\nVALUES"; while (($data = fgetcsv($handle, $max_line_length, ",")) !== FALSE) { while (count($data)<count($columns)) array_push($data, NULL); $query = "$insert_query_prefix (".join(",",quote_all_array($data)).");"; mysql_query($query); } fclose($handle); } }
function quote_all_array($values) { foreach ($values as $key=>$value) if (is_array($value)) $values[$key] = quote_all_array($value); else $values[$key] = quote_all($value); return $values; }
function quote_all($value) { if (is_null($value)) return "NULL";
$value = "'" . mysql_real_escape_string($value) . "'"; return $value; }
mysql_connect('localhost', 'root', '') or die(mysql_error()); mysql_select_db('a_webdev'); csv_file_to_mysql_table('subor.csv', 'menu');
?>
subor.csv: Kód: id,name,url 1,nazov,url/nazov 2,nazov2,url/nazov2
Tabuľka musí obsahovať rovnaké názvy stĺpcov ako je definované v súbore csv.
|
|
Registrovaný: 24.11.09 Prihlásený: 21.05.20 Príspevky: 195 Témy: 75 | 75 |
V DB mam tabulky presne take iste ako su v CSV a v PHP vypise "Pridane" ale realne v DB nic nieje importovane.
v DB mam tabulky:
Cena
Polozka
v CSV mam v jednom stlpci cena a druhom stlpci Polozka. Pod tym mam data, pod polozkou a pod cenou.
Kde robim moznu chybu?
D.
|
|
Registrovaný: 27.08.09 Prihlásený: 08.07.15 Príspevky: 169 Témy: 46 | 46 |
Uprav query:
Kód: mysql_query($query) or die(mysql_error());
Ako máš oddelené hodnoty v csv?
|
|
Registrovaný: 24.11.09 Prihlásený: 21.05.20 Príspevky: 195 Témy: 75 | 75 |
Teraz vypise: pridaneNo database selected
V CSV mám oddelovac pola : a oddelovac textu ;
Dakujem.
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 | 34 Bydlisko: Brno |
elo píše: No database selected A od nas chces pomoct s touto hlaskou, pretoze si bezradny, alebo preto, ze si lenivy? Po precitani hlasky ti ani len nenapadlo, co moze znamenat? Google ti nevyplul ani jedno riesenie? Ani si sa neskusil zamysliet, co robia jednotlive riadky v kode, ktory si skopiroval?
|
|
Registrovaný: 27.08.09 Prihlásený: 08.07.15 Príspevky: 169 Témy: 46 | 46 |
Uprav mysq_connect() a mysql_select_db() podľa svojho serveru... a v databáze musíš vytvoriť tabuľku a jej meno dať potom do tej funkcie...
|
|
Registrovaný: 24.11.09 Prihlásený: 21.05.20 Príspevky: 195 Témy: 75 | 75 |
Dobry den,
uz som to upravil, chyba bola v nazve tabulky.
Teraz hlasi:
pridaneYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ';cislo,;;odberatel;;,;;dodavatel;;,;;typ;;,;;polozka;;,;;mnozstvo;;,;;cena;;;' at line 1
Mrzi ma, ze niekto to berie v zlom ale keby som to vedel, nepytam sa.
Tuto chybu hore si viem prelozit a myslim si, ze chyba bude niekde v CSV ale tam mam ako som pisal : a ;
Dakujem za pomoc.
|
|
Registrovaný: 27.08.09 Prihlásený: 08.07.15 Príspevky: 169 Témy: 46 | 46 | |
Registrovaný: 24.11.09 Prihlásený: 21.05.20 Príspevky: 195 Témy: 75 | 75 |
Uz vazne neviem kde robim chybu:
pridaneYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cislo,,,odberatel,,,dodavatel,,,typ,,,polozka,,,mnozstvo,,,cena,) VALUES ('20' at line 1
|
|
Registrovaný: 27.08.09 Prihlásený: 08.07.15 Príspevky: 169 Témy: 46 | 46 |
DeiForm píše: subor.csv: Kód: id,name,url 1,nazov,url/nazov 2,nazov2,url/nazov2
Pozri si štruktúru a porovnaj to so svojim
|
|
Registrovaný: 24.11.09 Prihlásený: 21.05.20 Príspevky: 195 Témy: 75 | 75 |
CSV:
cislo_fa,odberatel,dodavatel,typ,polozka,mnozstvo,cena (v jednej bunke)
2012258,Firma,T-Com,25,5,2,258 (v druhej bunke, hned pod prvou)
PHP som upravil takto:
Kód: csv_file_to_mysql_table('11.csv', 'cislo_fa', 'dodavatel', 'odberatel', 'polozka', 'mnozstvo', 'cena', 'typ');
Kde prosim robim chybu?
|
|
Registrovaný: 21.02.06 Prihlásený: 08.12.14 Príspevky: 5404 Témy: 30 | 30 Bydlisko: Bratislava |
Píše ti, že máš chybu v SQL dotaze.
Toto je časť tvojho SQL dotazu:
Kód: 'cislo,,,odberatel,,,dodavatel,,,typ,,,polozka,,,mnozstvo,,,cena,) VALUES ('20' at line 1
máš pocit, že sa tak správne zapisujú hodnoty do databázy? Nevidíš tam chybu?
_________________ Neradím a nekomunikujem cez SS, ak niečo potrebujete, máte iné možnosti: Ak vám zmizla téma, alebo sa vám niečo nepáči. Ak potrebujete nahlásiť príspevok/človeka, reportujte ho. Ak máte s niečim problém, riešte to v danej téme. |
|
Registrovaný: 24.11.09 Prihlásený: 21.05.20 Príspevky: 195 Témy: 75 | 75 |
malo by to byt takto:
Kód: 'cislo,odberatel,dodavatel,typ,polozka,mnozstvo,cena,) VALUES ('20' at line 1
ale ako to docieliť?
Ď.
|
|
Registrovaný: 27.08.09 Prihlásený: 08.07.15 Príspevky: 169 Témy: 46 | 46 |
Ja už neviem ako ti to mám napísať, alebo ti tumám napísať celú aplikáciu na tu aj s inputom a komplletným spracovaním alebo čo...
Použitie funckie ktorú máš je:
Kód: csv_file_to_mysql_table('subor.csv', 'menu');
Kde subor.csv -> názov súboru ktorý chcše importovať
a menu -> názov tabuľky do ktorej to dávaš.
A nepíšem to tu prvý krát...
|
|
Stránka: 1 z 1
| [ Príspevkov: 25 ] | |
|