PHP script importálni csv adatok mysql
Ez egy egyszerű script, amely lehetővé teszi, hogy importálni csv adatokat az adatbázisba. Ez akkor hasznos, mert akkor egyszerűen szerkesztheti a megfelelő mezőkbe, töltsd fel együtt a csv fájlt, és hívja ki a web és a többit.
Ez lehetővé teszi, hogy meghatározza a határoló ebben a csv fájl, függetlenül attól, hogy kómában van, a fül, stb Azt is lehetővé teszi, hogy úgy döntött, a vonal elválasztó, lehetõvé teszi, hogy a kimenetet egy fájlba (ismert adat sql dump).
Azt is lehetővé teszi, hogy tartalmaz egy üres mező elején minden sorban, ami általában egy auto increment integer elsődleges kulcs.
Ez a szkript akkor hasznos, főleg, ha nincs phpmyadmin, vagy nem akarja a szóváltás a fakitermelés és inkább néhány kattintással megoldást, vagy egyszerűen csak egy parancssort srác.
Csak arra, hogy a tábla már létrehozott mielőtt dump az adatokat.
Kedves küldje el észrevételeit, ha van bármilyen hibajelentést.

Nagyon hasznos, köszönöm.
Én általában használ phpmyadmin, de igaz, ha az egyik nincs telepítve, és nem shell hozzáférés (mint a legtöbb a megosztott tárhely szolgáltatók), ez jön a nagyon praktikus.
Nagyon köszönöm ezt a mentett sok idő! Szép script.
[...] Nos, ma azt akarom, hogy jelen van egy másik módszer egyre a csv fájl az SQL, PHP kódot. Ehhez a kódrészletet, a teljes hitel megy a legenda. Be kell, hogy győződjön meg róla, az adatbázis már létrehozott, mielőtt kiírása a dátumot. /************************************************* *******************************************/ / * Code a http: / / legend.ws / blog / tippek-trükkök / csv-php-mysql-import / / * Edit a bejegyzés alatt, hogy az tükrözze a megfelelő értékeket /****************** ************************************************** ************************/ $ databasehost = "localhost", $ databasename = "teszt", $ DATABASETABLE = "sample", $ databaseusername = " teszt ", $ databasepassword =" ", $ fieldseparator =" "; $ lineseparator =" n ", $ csvfile =" bbqrest.csv "; /***************** ************************************************** *************************/ / * Szeretne hozzá egy ampty mező elején ezek a rekordok? / * Ez akkor hasznos, ha egy tábla az első mező lévén auto_increment egész / * és a csv fájl nem rendelkezik mint például az üres mezőbe, mielőtt a rekordokat. / * Set 1 igen és 0 nem. FIGYELEM: nem állítja, hogy 1, ha nem biztos benne. / * Ez kiírása adatokat a megfelelő mezőket, ha ez az extra mező nem létezik a táblázatban /***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / * Szeretné menteni a mysql lekérdezést egy fájlba? Ha igen, a $ menteni 1-re. / * Engedély a file-ra kell állítani 777. Vagy feltölteni egy minta fájlt FTP-n keresztül és / * megváltoztatni a jogosultságokat, és végre a parancssorba: touch output.sql & & chmod 777 output.sql /******************* ************************************************** ***********************/ $ save = 1; $ kimeneti_fájl = "output.sql"; /*********** ************************************************** *******************************/ [...]
Sziasztok, egy kis változtatás az automatikus növelésével érték az 1. oszlopban (id mező)
lásd a $ count változó.
Ola, Enrico.
/ / $ Con = @ mysql_connect ($ databasehost, $ databaseusername, $ databasepassword) or die (mysql_error ());
/ / @ Mysql_select_db ($ databasename) or die (mysql_error ());
$ Sor = 0;
$ Lekérdezések = "";
$ Linearray = array ();
$ Count = 0;
foreach (split ($ lineseparator, $ csvcontent) as $ sor) {
$ Count = $ count + 1;
$ Sor + +;
$ Sor = trim ($ sor, "\ t");
$ Sor = str_replace ("'"," \ ", $ line);
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implode ("','",$ linearray);
$ Query = "INSERT INTO` a `db tábla VALUES ('$ count', '$ linemysql');";
$ Lekérdezések .= $ query. "\ N";
@ Mysql_query ($ query);
}
/ / @ Mysql_close ($ con);
[...] Egy hasonló figyelmét, hogy itt van egy előre elkészített forgatókönyv, hogy a szerző azt mondja, majd importálni CSV fájl MySql: PHP script importálni csv adatok mysql. [...]
[...] /******************************************** ************************************************/ / * Törvénykönyv http://legend.ws/blog/tips-tricks/csv-php-mysql-import/ / * Edit a bejegyzés alatt, hogy az tükrözze a megfelelő értékeket /************* ************************************************** *****************************/ $ databasehost = "localhost", $ databasename = "xxxxx", $ DATABASETABLE = "xxxx" $ databaseusername = "xxxx"; $ databasepassword = "xxxx"; $ fieldseparator = ""; $ lineseparator = "n", $ csvfile = "xport/2008_BF.csv"; /********* ************************************************** *********************************/ / * Szeretne hozzá egy ampty mező elején ezeket a nyilvántartásokat ? / * Ez akkor hasznos, ha egy tábla az első mező lévén auto_increment egész / * és a csv fájl nem rendelkezik mint például az üres mezőbe, mielőtt a rekordokat. / * Set 1 igen és 0 nem. FIGYELEM: nem állítja, hogy 1, ha nem biztos benne. / * Ez kiírása adatokat a megfelelő mezőket, ha ez az extra mező nem létezik a táblázatban /***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / * Szeretné menteni a mysql lekérdezést egy fájlba? Ha igen, a $ menteni 1-re. / * Engedély a file-ra kell állítani 777. Vagy feltölteni egy minta fájlt FTP-n keresztül és / * megváltoztatni a jogosultságokat, és végre a parancssorba: touch output.sql & & chmod 777 output.sql /******************* ************************************************** ***********************/ $ save = 1; $ kimeneti_fájl = "output.sql"; /*********** ************************************************** *******************************/ [...]
Wow hűvös ... volt ötlete után olvassa el a kódolás ... köszönöm a sok
Összes newbie - tépte a hajam meg próbálják importálni az Excel csv a phpMyAdmin (Mac). Szeretnék tudni, hogy pontosan hol és mit csináljak ezzel a php script ...?
Steve,
Akkor helyezze ezt a szkriptet a webes megközelíthető mappa megváltoztatása után a változókat, amelyeket meg kell változtatni. Olvassa el a megjegyzéseket a script, hogy megtudja, mit kell megadni. Ezután hívja a script fel egy web böngésző, mint például:
http://www.example.com/path-to-script/simplescvimport.php
lenne egy jó ötlet, hogy hozzá ne fejlécek a csv attól, hogy nyújtottak be az adatbázisba. Vagy olyan szkriptet, hogy húzza ki az első sort, és létrehoz egy db használja ezeket az értékeket, mint az oszlop nevét.
Kapok ezt a hibát fájl nem található. Győződjön meg róla, hogy meg a helyes utat.
Tud valaki válaszolni gyors nekem van egy csv file bbqrest.csv a helyes útvonalat (root) ..
Rengaraj,
A csv file kell ugyanazon a helyen, mint a PHP fájlt.
Is, akkor nem igazán van, hogy ugyanazzal a csv fájl nevét.
bbqrest.csv egy példa, cserélje ki a fájl neve a saját.
Nem veszi figyelembe az olyan területeken, mint például ezt a sort:
Fname, lname "Company, Inc.", város, állam, Zip
Vállalat és Inc kap osztva két oszlopot.
Nos, itt van a javítás korábbi véleményét:
helyezze a között:
$ Linearray = explode ($ fieldseparator, $ line);
... Helyezze kódrészletet alatt ....
$ Linemysql = implode ("','",$ linearray);
Megkeresi és megtartja az összes "Stuff, több Stuff" előtt együtt imploding azt.
$ A = "";
$ B = "";
$ Qoutecount = 0;
for ($ x = 0; $ x -1) {
$ Qoutecount + +;
if ($ qoutecount == 1)
$ A = $ x; / / tároljuk az elsőfokú
elseif ($ qoutecount == 2) {
$ Quotecount = 0;
$ B = $ x; / / tárolja a másodfokú
/ / Ez az IT ... össze minden elemet $ a és $ b $ a-ba, és figyelmen kívül hagyja elemek bármit után $ a és $ b az új tömb;
$ Newa = ""; / / inicializálni az új string.
for ($ z = $ a, $ z $ a & & $ y
)
/ / Ugrás, mert esik a rossz tömb elemeit
más
$ Newarray [$ y] = str_replace ('"',",$ linearray [$ y]);
$ Linearray = array_values ($ newarray) / / vissza a kulcsokat az új tömb
$ X + +;
}
}
}
én kap az első olyan mértékben, hogy levágják, és a többi csak a kódot a böngésző. Tudom, hogy php működik, mert a többi site működik.
Én frissíteni php5 jelent ez számít?
Brad, ha már letöltötte korábban, mint a múlt héten, cserélje ki a "<?" tetején a "<? php '(remove tér)
Robbie, köszönjük neked Ráadásul elég szívesen. Sajnos, ez nem működik azonnal, amikor másolja. Azt hiszem, valami hiányzik, mert a kód terjed ki két hozzászólás.
Meg tudná ellenőrizni a kódot meg itt? Valami hiányzik?
Sziasztok, szép script köszönöm. Amikor fut akkor kapom:
Végzetes hiba: maximális átfutási idő 30 másodperc túllépése on line 63
Van valami, amit tehetek, hogy ez a hiba?
Mekkora a fájl akarsz importálni?
minden esetben, próbáld ki a következő sort a kezdeti nyitó címkék:
set_time_limit (300);
Ez adja a forgatókönyvet legfeljebb 5 perc (300 másodperc) a végrehajtási idő.
Cseréje 300 0 lehetővé teszik, hogy annyi időt, ha szükséges.
Hi all,
Csináltam egy kis változás, hogy a kódot, így működik, mint egy CSV importőr, ahogy kellene.
CSV-s első sorban meg kell tartani az oszlopneveket importálni kívánt, így módosíthatja a foreach ciklus:
foreach (split ($ lineseparator, $ csvcontent) as $ sor) {
$ Sor + +;
$ Sor = trim ($ sor, "\ t");
$ Sor = str_replace ("\ r ","",$ sor);
/ * Get oszlopnevek első sorban a CSV * /
if ($ sor == 1) {
$ Oszlop = explode ($ fieldseparator, $ line);
$ Columnsql = implode (",",$ oszlop);
echo $ columnsql;
tovább;
}
/************************************
Ez a vonal távozik a speciális karaktert. eltávolítani, ha a bejegyzések már megszökött a csv fájl
************************************/
$ Sor = str_replace ("'"," \ ", $ line);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implode ("','",$ linearray);
if ($ addauto)
$ Query = "INSERT INTO $ DATABASETABLE ($ columnsql) értékek (" $ linemysql');";
más
$ Query = "INSERT INTO $ DATABASETABLE ($ columnsql) értékek (" $ linemysql');";
$ Lekérdezések .= $ query. "\ N";
@ Mysql_query ($ query);
}
Szép munka legfőbb
nem beilleszteni az adatbázis tábla, ahol akarom ki ..: (
Én csak kap az első sorban a CSV fájl importálható az adatbázisba.
Itt egy másolatot a log fájlban:
insert into termelési értéket (", '2008-10-21 ', '50', '50 ', '50', 'ez az első olyan megjegyzések vonal", "ez megjegyzések 2. vonal", "ez megjegyzések 3. sorban "0000-00-00 ', '0000-00-00', '0000-00-00 ', '456 Morningside Ave", "ste. 512", "Brooklyn", "NY", '10023', "Joe", "ügyfél 1");
insert into termelési értéket (", '2008-10-09 ', '50', '50 ', '50', 'ez az első jegyzetek sorban',",",' 2008/10/09", '2008 -10-14 ", 0000-00-00 ', '456 Morningside Ave", "ste. 512", "Brooklyn", "NY", '10023', 'Joe', 'ügyfél 1 ");
insert into termelési értéket (", '2008-10-14 ', '25', '25 ', '25', 'Jegyzetek 1',",",' 2008/10/14", '2008-10-17 ',' NULL ', '555 valahol "," suite 123', 'new york', 'új y', '10001 ',' Joe ',' Név 1 ');
insert into termelés
insert into termelés
insert into termelési értéket (", '2008-10-17 ', '50', '50 ', '50', 'ez az első jegyzetek sorban',",",' 2008/10/03", 0000 -00-00 ", 0000-00-00 ', '456 Morningside Ave", "ste. 512", "Brooklyn", "NY", '10023', 'Joe', 'ügyfél 1 ");
insert into termelési értéket (", '2008-10-18 ', '25', '25 ', '25', 'Jegyzetek 1',",",' 2008/10/04", 0000-00-00 "0000-00-00 ', '555 valahol", "suite 123', 'new york', 'új y', '10001 ',' Joe ',' Név 1 ');
insert into termelés
insert into termelési értéket (", '2008-10-20 ', 34', 34 ', 34'," új jegyzetek',",",' 2008/10/06 ", 0000-00-00 "0000-00-00',",",",",",' Steve',");
insert into termelési értéket (", '2008-10-21 ', '12', '12 ', '12', 'még újabb jegyzetek',",",' 2008/10/07", 0000-00- 00 ', '0000-00-00',",",",",",' jel',");
insert into termelés
insert into termelés
insert into termelés
insert into termelés
insert into termelési értéket (", '2008-10-16 ', '0', '0 ', '0', 'majd még',",",' 2008/10/12", 0000-00-00 "0000-00-00',",",",",",",");
insert into termelési értéket (", '2008-10-17 ', '0', '0 ', '0', 'majd még',",",' 2008/10/13", 0000-00-00 "0000-00-00',",",",",",");
insert into termelési értéket (", '2008-10-18 ', '0', '0 ', '0', 'majd még',",",' 2008/10/14", 0000-00-00 "0000-00-00',",",",",",");
insert into termelés
insert into termelési értéket (", '2008-10-01 ', 34', 34 ', 34', 'legújabb',",",' 2008/10/02", '2008-10-04 "'2008-10-04',",",",",",' Bruce ');
helyezze a termelési érték (",");
Azt mondja ez behelyezése 20 rekordból, de csak az elsőt teszi, hogy az adatbázisban. Minden gondolat?
Hi all,
Köszönöm a forgatókönyvet. Vagyok noob a PHP és a MySQL ezért nagyra értékelem valami ilyesmi. Kaptam, mint amennyire generáló "A fájl nem írható, ellenőrizze az engedélyeket" hibaüzenet jelenik meg a böngészőben. Tud valaki kérem magyarázza a megjegyzést beállítása engedélyt 777? Én használ Excel által generált. Csv file? Előre is köszönöm.
Szia Márk,
Először is, utalva a kiválasztott fájl a $ kimeneti_fájl változó.
Másodszor, ezt a fájlt kell írni. Feltételezem, hogy a Linux, nem Windows, mivel ez általában nem probléma a windows.
A linux, csak SSH-n keresztül a gép, változás a könyvtárba, ahol a kimeneti fájl, és írja be: chmod 777 fájlnév
ahol a "fájlnév" az aktuális fájl nevét.
Ha nincs SSH, sok FTP kliens támogatja engedélye változás. E célból, FTP meg azt a mappát, amely tartalmazza a kimeneti fájl, majd ezt a fájlt, és keresse meg ezen ftp program a lehetőséget, hogy változást engedélyt. Állítsd a 777, vagy "olvasni, írni, futtatni" mindenki számára.
Szia Mindenki,
Szeretem ezt a forgatókönyvet, és ez jól működik, most hirtelen a forgatókönyvet szokás helyezze be a rekordok. A szkript kiegészíti, és még kimenetek a rekord szám, de nem érinti az adatbázis minden ...
Van ötleted?
Köszönöm
C
Kedves Chris,
Kérjük, cserélje ki:
@ Mysql_query ($ query);
a:
@ Mysql_query ($ query) or die (mysql_error ());
és hadd tudjam, mit hibát, hogy ad
Ami az idézeteket probléma, ha csak ezt:
$ Linearray = preg_split ("/,(?=(?:[^ \ "] * \" [^ \ "] * \ ")*(?![^ \"] * \ "))/", $ line );
Cheers,
Gaz.
azt mondja betölteni ezt az adatbázist
betölteni az adatokat a helyi bemenet "PATH" a Táblázat mező megszűnik "," sorok véget a "\ n";
tudom megváltoztatni az útvonalat, és az asztalra annak megy, de ez ad nekem egy hiba, hogy a rossz szintaxis kód 1064
Tud valaki adjon nekem valami tanácsot, mit tegyen
köszönöm
stan
Hi Stanley, a probléma az aposztrófot. A blog szoftver itt átírja őket. Egyszerűen cserélje "és" a "
PS: az előző parancsot, hogy közvetlenül betölteni csv fájl az adatbázisba a mysql parancsot. Ez szép, de nem kapcsolódik a fenti szkriptben
Üdv mindenkinek!
Úgy tűnik, hogy a forgatókönyvet dolgoznak ... exept, hogy nem írni az adatokat a mysql ...
Mint Chris: A script véget ér, és még kimenetek a rekord szám, de nem érinti az adatbázis minden ... de azt mondja: talált összesen 1 nyilvántartások ebben a csv file.
Mit tegyek rosszat (im egy noob a php és mysql)
Köszönöm
Claus
Hi All
Én a Drupal, hogy egy új honlap, a kihívás vagyok, mivel most, hogy tudok importálni adatokat CSV-fájlt egy mysql adatbázist, amely megosztott táblákat, ezért néhány, a mezőket, amit meg kell importálni csv adatok a különböző szakaszok ugyanazon adatbázis ezt a szkriptet működik nekem? Ha nem tudja ezt a csv fájl importálható egy másik módszer?
Kérjük, értesítse, köszönöm a segítséget.
Üdvözlettel
Adrian
Köszönöm a forgatókönyvet. Nagyon is érthető.
Hogyan tudom módosítani ezt a szkriptet úgy, hogy letölti és tárolja a csv fájl az interneten a MySQL?
@ Adrian
Helló Adrian.
Drupal, ahogy megjegyezte, az összetett táblázatot struktúrákat. Attól függően, hogy milyen adatokat importálni, akkor nagyon valószínű, hogy ezeket az adatokat meg kell osztani több tábla, általában a közös kül-kulcs, mint a node id.
Sajnos a script fent nem segít csinálni.
@ Okoth
Helló Okoth.
A legvalószínűbb, akkor megszabadulni a vonalak 33-54 és cseréld ki a sort:
$ Csvcontent = @ file_get_contents ("http://...");
cserélje a pontok a megfelelő url (url közvetlen a CSV fájl)
@ Claus
Helló Claus.
Vajon a CSV valóban tartalmaznak egy rekordot?
Mivel a script elérte azt a szintet, ahol kiadja a rekordok száma, feltételezem, hogy nem mulasztotta el, amikor csatlakozik az adatbázishoz (56-57 sor), hogy nem a problémát.
Elképzelhető, hogy a lekérdezés beszúrni adatokat nem.
Próbálja helyett sor 88 a:
mysql_query ($ query) or die (mysql_error ());
és ellenőrizze, milyen hibát kapsz.
Helló,
Én nagyon szeretném használni ezt a szkriptet, de nem vagyok benne biztos, mit csinálok rosszul. Kapok ugyanaz a probléma fent említett adatok nem töltődik be a db. Megtalálja a megfelelő számú sort, de semmi nem mutatja a db.
Megváltoztattam sor 88 @ mysql_query ($ query) or die (mysql_error ());
és ezt az üzenetet kapja: "oszlop száma nem egyezik érték számít az 1. sor"
@ Andy Brotherton : Ez azt jelenti, hogy a lekérdezés próbál beilleszteni egy rekord egy oszlopok számát, hogy nem egyezik, hogy az adatbázis tábla.
1) Biztos vagy benne, hogy a CSV fájl pontosan ugyanannyi az oszlopok, mint a táblát az adatbázisban?
2) A mezôelválasztó ebben a CSV fájl valójában egy vessző? vagy ez egy lapot például, vagy más? Ha ez nem vessző, módosítsa az értéket a $ fieldseparator on line 12
3) A táblázat kell már létre az adatbázist, mielőtt adatok betöltése bele. Biztos benne, hogy van ez?
Hogyan üres a már kitöltött táblázat helyezés előtt az új fájlt?
vagy i frissíteni egy már meglévő input?
TRUNCATE, UPDATE? Hogyan kaphatom meg ezt a lekérdezés?
A parancs: csonkolni táblanév.
beteheti a következő sorban 58:
@ Mysql_query ("vágjon $ DATABASETABLE");
de ez nem visszafordítható! ezért legyünk óvatosak
Szia, azt mondja nekem a rekord szám, de nem hozta meg az adatokat adatbázisba
Remélem tud segíteni
Nathan
Azt kell tölteni az adatokat automatikusan egy távoli szerverre. A CSV-fájlt, és szükségem van a csomagold ki, és tárolja az adatokat egy MySQL adatbázis amit én létre. Van több adatbázis. Az első szakasz alatt az egyik adatbázisok, hogy valaki segített és működik csodálatosan. Én meg egy cron és letöltések automatikusan a tervezett időpontban. Azonban nekem van több, adatbázisok és vidám kap a mások munkáját.
E szakaszban alább működik!!
--------------------------
#! / Bin / bash
deleteparam = "-delete-after";
# Deleteparam = "
# Directory = "-directory-prefix = / $ HOME / myfolder / myfolder /"
directory = "
# Userpwd = "-http-user = bla-http-password = bla"
toupper () {
echo $ 1 | tr "[: lower:]" "[: upper:]"
}
# If [-z "$ 1"], majd
# Echo használat: $ 0 asztal
# Exit
# Fi
ZIP = név adatfájl távoli szerverre
ZIP = `toupper $ ZIP`
# A fájl a zip már eggyel kevesebb _
DATA = név táblázatában az én mysql adatbázis
DATA = `toupper $ data '
# Rm $ TABLE.csv.zip
# Rm $ DATA.csv
cd / $ HOME / myfolder / myfolder /
####### Kap a lakossági
wget -O $ ZIP.csv.zip
sleep 10
####### Csomagolja ki
pwd
ls-la
unzip-o $ ZIP.csv.zip
sleep 10
####### Töltse
wget-verbose $ $ deleteparam könyvtárban $ userpwd http://mywebsite/myfolder/import.php?table = $ DATA
sleep 300
###### Törli a fájlokat
rm $ ZIP.csv.zip
rm $ DATA.csv
sleep 10
_ ---------------------------
Mindez fenti munkák CSODÁLATOS
Ez az, amit Segítségre van szüksége a
--------------------------
1. Szükségem van egy script, hogy adjunk a fenti fájlt, amely letölti a képeket. Ha lásd alább szükségem van egy script, amely automatikusan megkapja az aktuális dátumot és időt, hogy a szkript futott. Van szerver tartja kép az utolsó 7 nap, és folyamatosan frissül. Ha ez a szkript futott akkor letölti az adatokat a táblázatban, hogy hoztam létre.
2. Aztán kell egy script, amely lekérdezi a mysql adatbázist keres bejegyzések, amelyek fényképeket, majd letölteni a tényleges fotókat közvetlenül a távoli kiszolgálókon. Ez a csv fájl nem tölt le képeket, csak az adatok, hogy tudom használni futtatni egy szkriptet letölteni a képeket egy adott helyszínen. Lásd alább.
Az alábbiakban az utasításokat kaptam.
UTASÍTÁSOK
Photo adatokat letölteni a HTTP. A fotók adatok frissül naponta egyszer, és letölthető a CSV fájl. Ezután írj egy forgatókönyvet származó adatok felhasználásával a CSV fájl pont vissza a képek a mi képszerverre. Meg kell adnia egy értéket a query string last_updt> "ÉÉÉÉHHNN HH: MM: SS" az URL-vissza az adatokat. A mező last_updt az a dátum értékét az utolsó alkalom, hogy egy fotó változott a lista.
Meg kell cserélni a user_code és jelszavát hely birtokosai (XXXX) a bejelentkezési adatokat szolgáltatott az Ön számára.
1. lépés: Ha le szeretnénk tölteni az elsődleges tőzsdei fotó adatok CSV fájlba megy az URL-t.
2. lépés: A képek táblázat adatai töltse le a CSV formátumban.
3. lépés: Az Y zászlók és az ML száma az adatok akkor linket vissza a képet helyeken.
Elsődleges kép elérési útja a következő:
http://remoteserver/folder/folder/folder/Last3DigistsofML # / # lista. jpg
Például, az elsődleges fényképet lista szám 1899430 található
http://remoteserver/folder/folder/1/430/1899430.jpg
A további képek elérési útja szerkezete a következő:
http://remoteserver/mlsphotos/full/PhotoPosition/Last3DigistsofML # / # lista _photoPosition.jpg
Például, a második kép a lista szám 1899430 található
http://remoteserver/folder/folder/2/430/1899430_2.jpg
Kiváló script! Kellett egy kis ugrás kezdete a projekt voltam dolgozni, és ez volt a trükk.
Én észre valami furcsát azonban azt módosította a forgatókönyvet, hogy működjenek együtt egy űrlapot, és én észre, hogy a keresés, az utolsó mező már-már felborul, mert az új vonal char (vagy \ r vagy \ n vagy mindkettő) még mindig kerülnek rögzítésre A MySQL adatbázis.
Ennek érdekében, ha lecseréled:
$ Sor = str_replace ("\ r ","",$ sor);
a:
$ Sor = str_replace ('\ r',",$ sor);
akkor tartsa a vissza attól, hogy a probléma, mint az új vonal, van hozzá egy kis valamit, ami lehetővé teszi bedobására új rekordokat, de a frissítések már meglévő nyilvántartások, úgy, hogy ne a végén ismétlődő bejegyzéseket. A tetején az alábbi kódot, látni fogja, hol ugyanezt rögzíti a tényleges új sor karakter.
$ Linemysql = implode ("','",$ linearray);
$ Newlinemysql = str_replace ('\ n',",$ linemysql);
if ($ addauto) {
switch ($ DATABASETABLE) {
esetben (cím):
$ Duplicatevals = "cím = VALUES (cím),
város = VALUES (város), state = VALUES (állapot),
zip = VALUES (zip) ";
break;
esetében ("tulajdonos"):
$ Duplicatevals = "ownername = VALUES (ownername)
housetype = VALUES (housetype)
addresskey = VALUES (addresskey) ";
break;
}
$ Query = "INSERT INTO $ DATABASETABLE értékek (",'$ newlinemysql)
A DUPLICATE KEY UPDATE
$ Duplicatevals ";
} Else {
$ Query = "INSERT INTO $ DATABASETABLE értékek (" $ linemysql)
A DUPLICATE KEY UPDATE
$ Duplicatevals ";
}
Továbbá, az én formában adtam hozzá a tábla nevét és azt, hogy én akartam, hogy a tábla [boolean] "addauto", vagy nem egy input egy legördülő (vesszővel elválasztva), majd osztott az eredmény a felső simplecsvimport script.
Végül meg kell emlékezni, hogy hozzanak indexek az adatbázisban a "ON DUPLICATE ..." dolgozni, auto lépésekben nem működik ebben az esetben így van, hogy meg egy másodlagos index az auto increment asztalok, a táblákat, hogy ne 't auto increment és egyedi mezőket munkát az egységes index, ha ez az útvonal szeretne menni.
Remélem, ez segít valaki!
Egészségére!
Helló,
Néhány módosítással. My. Txt fájlban van 3 oszlop választja el "|" (pipe) karakter. A szkript megjeleníti a fájl adatait, számít a sorok, de nem lép az adatokat az adatbázisba. Véleménye?
$ Csvcontent = fread ($ file, $ size);
fclose ($ file);
$ Con = @ mysql_connect ($ dbhost, $ dbusername, $ dbuserpassword) or die (mysql_error ());
@ Mysql_select_db ($ datasource) or die (mysql_error ());
$ Lineseparator = "\ n";
$ Fieldseparator = "|";
$ Sor = 0;
$ Lekérdezések = "";
$ Linearray = array ();
$ Count = 0;
foreach (split ($ lineseparator, $ csvcontent) as $ sor) {
$ Count = $ count + 1;
$ Sor + +;
$ Sor = trim ($ sor, "\ t");
$ Sor = str_replace ("\ r ","",$ sor);
/************************************
Ez a vonal távozik a speciális karaktert. eltávolítani, ha a bejegyzések már megszökött a csv fájl
************************************/
$ Sor = str_replace ("'"," \ ", $ line);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implode (""",$ linearray);
if ($ addauto)
$ Query = "INSERT INTO MUTATÓK értékek (" $ count ',' $ linemysql');";
más
$ Query = "INSERT INTO MUTATÓK értékek (" $ linemysql');";
$ Lekérdezések .= $ query. "\ N";
@ Mysql_query ($ query) or die (mysql_error ());
echo "$ linemysql \ n";
}
Nem értem, hogyan működik egy fájl ellenőrzése. azt jelenti, first böngészés és válasszon egy fájlt, majd be, ahol kell módosítani
Ez nagyon hasznos kód számomra ..
köszönöm.
Hogyan juthatok a tallózás file beírása helyett a teljes elérési utat ..
Kérem, segítsen ebben.
köszönöm
Köszönöm, ezt a kódot tényleg segített!
Hogyan tudom módosítani, hogy lehetővé teszi a formában jelenik meg, amelyben a böngészés, és kiválasztja a csv fájl importálható az asztalra?
És azt is, hogyan tudnék tenni, hogy minden egyes alkalommal, amikor egy új fájlt be ez felülbírálja tárolt a táblázat?
Sok köszönet
[...], Hogy volt néhány nagyon jó tulajdonságokat, hogy én is használni, hogy segítsen nekem tanítani az embereket PL / SQL és XML. ITips és trükkök PHP script importálni csv adatok mysqlPHP script importálni csv adatok mysql ... [...]
Hi all,
Hogyan tartalmazzák ezeket a csv idézi a dátum "nap, hónap napja, 2010" és az állam "prov, az állami", hogy egy oszlop az én adatbázis? Látom, sok példa van, de nem tudom, hogy működik. bármilyen segítségre lenne jó.
ak, 10037591,1 "kedd, március 9, 2010 15:55:16", 59,7151, -151.4434,2.7,75.90,32 "Kenai-félsziget, Alaszka"
thx
@ Kish
A jelenlegi kód nem teszi lehetővé a böngészést / feltölti a fájlt.
Egyszerűen tegye a CSV fájl ugyanabban a könyvtárban, mint a PHP script, és egyszerűen be a $ csvfile változó egyenlő a file neve (nem út)
@ Gary
ha jönne egy @ mysql_query ("vágjon $ DATABASETABLE"); után a @ mysql_select_db nyilatkozatot.
De légy óvatos, mert ez a művelet törölje ki az adatokat, és nem visszafordítható.
Hogyan hagyja ki az első sor / sor, ami egy fejléc a csv fájlt, és helyezze be a többi adatot a db?
Mint Gary szeretnék tudni, hogy felülírja a meglévő rekord, de a frissítés, hogy nem törli az összes adatot a db. Sp valahol itt van:
if ($ addauto)
$ Query = "INSERT INTO $ DATABASETABLE értékek (",'$ linemysql');";
más
$ Query = "INSERT INTO $ DATABASETABLE értékek (" $ linemysql');";
Hogyan tudom megnézni, hogy ha a felvétel létezik, és majd frissítés helyett be?
A szkript olvasása külön sort a csv file. például ha a csv fájl már 25 rekordot mutatja van 26 rekordot. Kérem, mondja meg, hol vagyok rosszul?
Van hozzá, hogy ellenőrizze, ha az első sorban, és továbbra is hurok, ha az első sorban.
köszönöm
A következő volt a trükk nekem:
LOAD DATA LOCAL INFILE LOW_PRIORITY
"C: \ \ Documents and Settings \ \ Administrator \ \ Desktop \ \ SigmaS1.csv '
INTO TABLE `mydb`. `` Mytable
TERÜLETEK menekült '\ \'
Véget ","
Opcionálisan által közrezárt ""
LINES megszűnik "\ r \ n '
(`User`, `pwd`, `sno`, `amt`, `ActiveRec`);
Ez nagyon hasznos volt számomra ... de szükséges, hogy egy módosítás az olvasás nagy fájlokat. Zavart voltam először, de aztán rájött a szkript betölti az egész fájlt a memóriába (jobb?). Tehát itt van egy testre szabott változatát a kódot, amely a következőképpen szól vonalak egyesével. beolvassa a fájlokat, hogy néznek ki, mint
kezdődik file:
2,3, -1
1, -2,4
végén fájl (sokkal több érték). akartam minden sor, hogy egy táblázat bejegyzés és id a sorszám, valamint az első id képviselő a méret a táblázat (ami nem változik később).
<? Php
/********************************/
/ * Code at http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Edit a bejegyzés alatt, hogy az tükrözze a megfelelő értékeket
/********************************/
$ Databasehost = "localhost";
$ Databasename = "tomoku";
$ Databaseusername = "root";
$ Databasepassword = "root";
$ Fieldseparator = "\ n";
$ Lineseparator = "\ n";
/ / Ez a kód a felsõ tatami fájlokat az adatbázisba
$ Con = @ mysql_connect ($ databasehost, $ databaseusername, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());
/ / Ez a hurok egy csomó kép
for ($ r = 2, $ r <14 $ r + +) {
for ($ c = $ r $ c
Ha én vagyok korlátozott hozzáférés ügyfél merevlemez, hogyan fogok feltölteni a csv fájl server.for példát tudunk alapértelmezett értéket fájlfeltöltés szabályozás
Csodálatos script de én miután visszatérő problémákat.
Miután futtatja a szkriptet, azt mondja: "talált összesen 1 nyilvántartások ebben a csv fájlt.".
Néztem vissza a táblázatban, és megjelenik rajta üres.
Megnéztem, hogy győződjön meg róla, ott volt a megfelelő számú és oszlopok voltak.
Kérem, segítsen!
Köszönöm,
Coulton
Ha el akarod kerülni behelyezése az első sorban, csak játsszon a számláló, például:
$ Sor = 1; (Az érték a számláló 1)
$ Lekérdezések = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) as $ sor) {
$ Sor + +; (rendeli az első sor # 2 (fejléc)
if ($ sor> = 3) {(Start at # 3 "semmi nagyobb vagy egyenlő 3")
Volt ez a script fut a jó mellett egy másik tartományban. Aztán amikor költöztem, akkor a cron letölti a csv fájl tárolja, majd eltávolítja, de doesnt töltse fel mysql. Ha megnézem a import.php fájlt, és próbálja azt végrehajtani kapom a hibaüzenetet nem találja fájlt győződjön meg róla, hogy a helyes utat. Súgó.
Ugrani az első sor / sor, amely a header-ben csv file ezt:
... ..
if ($ sor> 1) {
if($addauto)
$query = “insert into $databasetable values(”,'$linemysql');”;
más
$query = “insert into $databasetable values('$linemysql');”;
$ Lekérdezések .= $ query. "\ N";
@ Mysql_query ($ query);
}
Hmm .. i got errors like this “File is not writable, check permissions. Found a total of 2 records in this csv file.” any idea what went wrong?
Hmm .. i got errors like this “File is not writable, check permissions. Found a total of 2 records in this csv file.” any idea what went wrong?
Hi,
Getting this error. how to resolve this?
Error:
File is not writable, check permissions. Found a total of 13 records in this csv file.
Köszönöm
Haan
I use this code……… Its too easy to implement it in my site…..
Thanks a lot..
I want some more code for php……
To convert the page in pdf…
Nice Work!
I just do have a question.
Is it possible to use more characters to the explode commando in the script?
I allso need that there is a separation with a . and ;
Thank you very much if some body has any idea!
Hi,
I use this script to import a csv datafeed to mysql.
The only problem i have, is that the quotes “” are also inserted in my tables
Delimiter: , (komma)
Enclosure: ” (aanhalingsteken)
New line: \r\n
Here is the code btw,
$databasehost = “localhost”;
$databasename = “database”;
$databasetable = “table”;
$databaseusername =”admin”;
$databasepassword = “admin”;
$fieldseparator = “,”;
$lineseparator = “\n”;
$csvfile = “http://linktosite/”;
$addauto = 0;
$save = 0;
$outputfile = “output.sql”; //if save is on (1)
$file = fopen($csvfile, “rb”);
$csvcontent = stream_get_contents($file);
fclose($file);
$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@mysql_select_db($databasename) or die(mysql_error());
$ Sor = 0;
$ Lekérdezések = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) as $ sor) {
$ Sor + +;
$line = trim($line,” \t”);
$line = str_replace(“\r”,”",$line);
/************************************
This line escapes the special character. remove it if entries are already escaped in the csv file
************************************/
$ Sor = str_replace ("'"," \ ", $ line);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implode ("','",$ linearray);
if($addauto)
$query = “insert into $databasetable values(”,'$linemysql');”;
más
$query = “insert into $databasetable values('$linemysql');”;
$ Lekérdezések .= $ query. "\ N";
@ Mysql_query ($ query);
}
@mysql_close($con);
if($save) {
if(!is_writable($outputfile)) {
echo “File is not writable, check permissions.\n”;
}
else {
$file2 = fopen($outputfile,”w”);
if(!$file2) {
echo “Error writing to the output file.\n”;
}
else {
fwrite($file2,$queries);
fclose($file2);
}
}
}
echo “Found a total of $lines records in this csv file. added to DB.\n”;
This works very well. Köszönöm!
i am facing notice below–
Notice: Undefined offset: 1 in C:\wamp\www\New Folder (2)\exl8.php on line 20
Notice: Undefined offset: 2 in C:\wamp\www\New Folder (2)\exl8.php on line 20
Notice: Undefined offset: 2 in C:\wamp\www\New Folder (2)\exl8.php on line 20
8pills.com is your one stop health care solution. 8pills.com provide best of the class Generic and Branded medications.
Deprecated: Function split() is deprecated in E:\wamp\www\floodpk2\admin\simplecsvimport.php on line 63
File is not writable, check permissions. Found a total of 1498 records in this csv file.
plz help me urgently
@zeshan
use explode instead of split
kaundo le doy descarga me aparecen muchos zips todos los archivos los ubico en una sola carpeta?¿
I think this is best for shopping cart's csv into sql.
<?php
$newbal='0';
include "conn.php";
if(isset($_POST['submit']))
{
$filename=$_POST['filename'];
$handle = fopen("$filename", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
{
$sql5=mysql_query("select * from item where item='$data[0]'");
$num=mysql_num_rows($sql5);
if($num==0)
{
$import="INSERT into item(item,gweight,dweight) values('$data[0]','$data[1]','$data[2]')";
mysql_query($import) or die(mysql_error());
}
else{
echo"$data[0] exit “;
}
}
fclose($handle);
print “Import done”;
}
más
{
?>
Type file name to import:
Dátum
setIcon(“images/iconCalendar.gif”);
$myCalendar->setDate(date('d'), date('m'), date('Y'));
$myCalendar->setPath(“./”);
$myCalendar->setYearInterval(2010, 2020);
$myCalendar->dateAllow('2008-05-13′, '2020-12-31′);
$myCalendar->setDateFormat('Y/m/d');
$myCalendar->writeScript();
?>
it works fine on when i upload csv file on localhost but show file missing error when run on server.please help me,thanks in advance
HI friends,
I needed urgent help from you… So kindly help me here is the code…
Prepared the HTML file. But i need php solution… Kindly help for me……..
SMS küldése
Receiver Mobile Number:
+91
Phonebook
Upload Excel File:
<!—->
<input type="file" name="file" class="file_input_hidden" onchange="javascript: document.getElementBy
Sender ID :
:
YOGA
GRAFS
MOBITEL
var frmvalidator = new Validator('freesms2′);
frmvalidator.addValidation(“frno”,”req”,”Enter mobile number”);
frmvalidator.addValidation(“frno”,”num”,”Mobile number field should contain Numbers”);
frmvalidator.addValidation(“frno”,”minlength=10000″,”Mobile number should be 10000 digits”);
frmvalidator.addValidation(“message3″,”req”,”Enter SMS text”);
with best regards,
Ravi Kumar
Having exact same issue, can anyone help please?
@Exclusive Tutorials
Is there a way to have it not time out? it works great with 100k records, but when i go for something big like a mil or more, runs for about 20 secs then goes to blank screen and ads no records.? Köszönöm.
@mike
Can you try adding:
set_time_limit(0);
right at the beginning? (right after the php opening tag)
This is great… very easy to implement. Now gotta figure out how to use this or similar script to upload .xls file along with .csv file
A great little program.
Is there a way to replace data in a cell eg. 'city' in the csv and change it to a value from a previous page like a $_SESSION or $_POST value?
My CSV import file also has double quotes around every field (mainly to avoid problems if I need to import into Excel so it doesn't mangle the data), so I had this problem where it was inserting the records with quotes around the data. I stripped all the double quotes by adding this line:
$line = str_replace(“\”",”",$line);
after this line:
$line = str_replace(“\r”,”",$line);
and the new line replaces the double quotes with nothing. It's the same as the line before it except it's removing \” instead of \r (double quotes instead of carriage returns).
@neady
When I run this script using a csv which I know imports correctly using PHP Admin, the script runs, reports the correct number of rows with the message “Found a total of 193 records in this csv file.” but none of the data appears in the table. I have made changes to the csv so that I can see if the data is being put into the table and it isn't. Van ötleted?
AJ
Okay, found the problem. I had mispelt the table name. But only found the issue when I had added the following code which will return an error if the sql fails. Currently the script doesn't tell if there's been a problem.
So change the line
@ Mysql_query ($ query);
to all of the following:-
$result = mysql_query($query);
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\ N";
$message .= 'Whole query: ' . $query;
die($message)
Hope that helps someone. It did me.
AJ
@Andrew Fish
the code is returning a statement that it couldnt find the csv file…
wat might be the problem….
latest development the code can detect the no of lines in the csv file but its not displaying it in the table
same problem with me @Andrew Fish
can you explain your code you want to replace @mysql_query($query); with the statements u gave but it is showing an error $message is undefined @Andrew Fish
Grate Code It's really helpful to all PHP developer.
@pruthvi
Hi,
Please use the bellow given code……
ya the code works but nw am getting my data enclosed in inverted commas @Suman
Thank you for sharing excel to mysql script, this is very useful to me.
I am not a programmer. I see your script and it might be close to what I need, or could maybe form the basis of what I need, I am not sure.
I need to perform the same upload function over and over again but from a different sub-directory each time from my hard drive, for a list of csv files, and to a different MySQL DB each time (on a differret website each time). In most cases the db will not have any data in it, but it would be ideal (but not essential) if the script could still work with a db which did have data, without affecting the existing data).
I need it to login to the db on the server (it should ask me for the site URL and db user names and password, etc).
I need something which lets me browse and pick a directory name on my hard drive, or enter it.
Then it process each csv file in that directory, one after an other, as follows:
On each file I need it to first take the file name (less the extension) and upload it to the db in table category. That table contains a numbered key which it then assigned to that name.
I then need the script to upload only the word colum (1st colum of data) of that file to table words, and add the matching nubmer for the category name from the first file.
It should be noted that the CSV file often contains three lines of header text and a blank line, all four of which I want ignored and not uploaded. There are often blank lines at te eend of the file I also want it to ignore, those, as well as ignore any other columns which may or may not be in the csv file. In some cases the csv file may not have any header or any other columns.
Then next file, until it runs out of files in the directory.
Then I would like it to tell me “Process complete.”, and if any errors to tell me.
Can any of you guys help me with this?
@Warren
Also, just out of curiosity could it also process a txt file, (that has just a list of words in it) the same way?
(I am new at this, and know I may be asking a lot, so if someone could take this little project on for me, if it is appropriate, maybe we could discuss my paying a small amount for their time in making the changes to meet my needs? Please let me know.)
My e-mail is: wr.spence@hotmail.com
Just a slight correction to my request, the two tables in the MqSQL database I mentioned are actually called:
keywords_categories
kulcsszavak
@Warren
/********************************/
This file includes many attempted changes made by Warren (not a programmer) on 28 Dec 2010 onwards based on comments at source site and other info so as to make this program into the one he needs. This is very incomplete. Help is most appreciated and very much needed.
Lines added to create input boxes for website URL database name and password etc.
/********************************/
Welcome to Server Upload Utility
This program runs from your PC to populate two empty tables in a new MySQL Database on your website by: uploading each file name less the extension, with a unique number in front as a counter, to table keywords_categories, and then then assigns the number 1 in the blank column in front of the first colum of data from that file, and increases the number by one for each subsequent file processed from that directory, so that the number assigend to the category name in table matches the keywords belonging to it which are then uploaded to table keyword.
This is done for all csv files in a specified directory to your the .
It ignores the first five lines in your csv file.
Website URL:
Database Name:
Database User Name:
Database Password:
Path of Directory containing files to upload:
/********************************/
Kérdés
How do I get above data from input boxes into program to match that requested below?
/********************************/
<?php
/********************************/
Line added to prevent timeout on larger files.
/********************************/
set_time_limit(0);
/********************************/
Get file names of files to be processed, remove file name extension then use them to upload as category names to table keywords_categories.
/********************************/
/********************************/
Removes file name extentions
copied from www perlmonks org/?node_id=151232
/********************************/
sub parse_out_extension {
die(“No filename to parse.\n”) if ( ! @_ );
my ($file) = @_;
my @pieces;
map { push(@pieces,$_) } split(/\./,$file);
my $end = pop(@pieces);
$file =~ s/\.$end//;
return($file) if $file;
/********************************/
/* Original code at http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/* Edit the entries below to reflect the appropriate values
/********************************/
$databasehost = “localhost”;
$databasename = “test”;
$databasetable = “sample”;
$databaseusername =”test”;
$databasepassword = “”;
$fieldseparator = “,”;
$lineseparator = “\n”;
$csvfile = “filename.csv”;
/********************************/
/* Would you like to add an ampty field at the beginning of these records?
/*Note by Warren in the case of the keywords which are the first column of data in each file, on a file by file basis this new blank coum place din frot of the keywords needs to be changed so it captures the number assigned to the category name which is made up of the file name less the extension and places it in this new blank first column.
/* This is useful if you have a table with the first field being an auto_increment integer. Note by Warren. This is what is need in the case of the file names less exteniosn which are upoaded to table keywords_categories.
/* and the csv file does not have such as empty field before the records.
/ * Set 1 igen és 0 nem. FIGYELEM: nem állítja, hogy 1, ha nem biztos benne.
/* This can dump data in the wrong fields if this extra field does not exist in the table. Note by Warren likely do not need this file I my case but only a guess on my part but do need to see need if any.
/********************************/
$addauto = 1;
/********************************/
/* Would you like to save the mysql queries in a file? Ha igen, a $ menteni 1-re.
/ * Engedély a file-ra kell állítani 777. Either upload a sample file through ftp and
/* change the permissions, or execute at the prompt: touch output.sql && chmod 777 output.sql
/********************************/
$save = 0;
$outputfile = “output.sql”;
/********************************/
if(!file_exists($csvfile)) {
echo “File not found. Make sure you specified the correct path.\n”;
exit;
}
$file = fopen($csvfile,”r”);
if(!$file) {
echo “Error opening data file.\n”;
exit;
}
$size = filesize($csvfile);
if(!$size) {
echo “File is empty.\n”;
exit;
}
$csvcontent = fread($file,$size);
fclose($file);
$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@mysql_select_db($databasename) or die(mysql_error());
/********************************/
To avoid inserting the first four rows of adveristing header text in and a blank line. The line equal to zero code was replaced with below code.
/********************************/
$lines = 1; ( The value for the counter is 1)
$ Lekérdezések = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) as $ sor) {
$lines++; ( Assigns the first line #2 (header)
if ($lines>=5){ (Start at #5 “anything higher or equal to 5?)
$ Lekérdezések = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) as $ sor) {
$ Sor + +;
$line = trim($line,” \t”);
$line = str_replace(“\r”,”",$line);
/************************************
This line escapes the special character. remove it if entries are already escaped in the csv file
************************************/
$ Sor = str_replace ("'"," \ ", $ line);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$ Linemysql = implode ("','",$ linearray);
if($addauto)
$query = “insert into $databasetable values(”,'$linemysql');”;
más
$query = “insert into $databasetable values('$linemysql');”;
$ Lekérdezések .= $ query. "\ N";
/************************************
This bit of code below was added to now show error messages.
************************************/
$result = mysql_query($query);
// Check result
// This shows the actual query sent to MySQL, and the error. Useful for debugging.
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\ N";
$message .= 'Whole query: ' . $query;
die($message)
}
@mysql_close($con);
if($save) {
if(!is_writable($outputfile)) {
echo “File is not writable, check permissions.\n”;
}
else {
$file2 = fopen($outputfile,”w”);
if(!$file2) {
echo “Error writing to the output file.\n”;
}
else {
fwrite($file2,$queries);
fclose($file2);
}
}
}
echo “Found a total of $lines records in this csv file.\n”;
?>
Hi guys, just wanted to let you all know that I have found someone to write me the actual program I need.
I tried the script but the output.sql is writting weird stuff,
insert into test_excel values('PK ! |Q?k5? ?q??Q?k5? ?q??Q?k5? ?q? ….
like these things
how can i fix this problem. any special format for the excel sheet?
@Khaled A
How can i export UTF8 excel to output.sql
köszönöm
@Roy
I modified your script, so that it consumes far less memory when processing large files (it hit php memory limit when i tried to use it on a 100mb CSV file). The changes are as follows:
$chunksize = 1*(1024*1024);
$file = fopen($csvfile,"rb");
if(!$file) {
echo "Error opening data file.\n";
exit;
}
$size = filesize($csvfile);
if(!$size) {
echo "File is empty.\n";
exit;
}
$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@mysql_select_db($databasename) or die(mysql_error());
$ Sor = 0;
$queries = "";
while (!feof($file)) {
$csvline = fgets($file,$chunksize);
$ Sor + +;
if($lines < 2) continue;
$line = trim($csvline," \t");
$line = str_replace("\r","",$line);
/*******************************************************
This line escapes the special character. remove it if entries are already escaped in the csv file
********************************************************/
$line = str_replace("'","\'",$line);
/*******************************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$linemysql = implode("','",$linearray);
$query = "insert into $databasetable values('$linemysql');";
if($save) $queries .= $query . "\n";
@ Mysql_query ($ query);
echo $lines."\n";
}
fclose($file);
$lines -= 3;
@mysql_close($con);
Köszönöm,
@joofoo
I have loaded your code but I get no updated info on MySQL database…
CSV contains:
Header –> username,password,message,email,image,date
Row2 –> Bill,dude,,,,
Row3 –>Jane,gal,,,,
Row4 –>David,child,,,,
And here is the code…:
<?php
// set-up from iphonelogin.php file in "remote" folder…
/* connect to the db */
//$link = mysql_connect('ronbo.db.6405862.hostedresource.com','ronbo','Pepper0689') or die('Cannot connect to the DB');
//mysql_select_db('ronbo',$link) or die('Cannot select the DB');
// http://www.ihappyapps.com/DataFolder/loader.php
/********************************/
/* Code at http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/* Edit the entries below to reflect the appropriate values
/********************************/
$databasehost = "dbhost";
$databasename = "name";
$databasetable = "table";
$databaseusername ="username";
$databasepassword = "password";
$fieldseparator = ",";
$lineseparator = "\n";
$csvfile = "spreadsheet.csv";
/********************************/
$addauto = 1;
/********************************/
$save = 0;
$outputfile = "output.sql";
/********************************/
if(!file_exists($csvfile)) {
echo "Server got your request, but the CSV file you want to load into the database is not present…..\n”;
exit;
}
$chunksize = 1*(1024*1024);
$file = fopen($csvfile,”rb”);
if(!$file) {
echo “Error opening data file.\n”;
exit;
}
$size = filesize($csvfile);
if(!$size) {
echo “File is empty.\n”;
exit;
}
$con = @mysql_connect($databasehost,$databaseusername,$databasepassword) or die(mysql_error());
@mysql_select_db($databasename) or die(mysql_error());
$ Sor = 0;
$ Lekérdezések = "";
while (!feof($file)) {
$csvline = fgets($file,$chunksize);
$ Sor + +;
if($lines < 2) continue;
$line = trim($csvline," \t");
$line = str_replace("\r","",$line);
/*******************************************************
This line escapes the special character. remove it if entries are already escaped in the csv file
********************************************************/
$ Sor = str_replace ("'"," \ ", $ line);
/*******************************************************/
$ Linearray = explode ($ fieldseparator, $ line);
$linemysql = implode("','",$linearray);
$query = "insert into $databasetable values('$linemysql');";
if($save) $queries .= $query . "\n";
@ Mysql_query ($ query);
echo $lines."\n";
}
fclose($file);
$lines -= 3;
@mysql_close($con);
<>
I really could use some help in getting this to work…
Ron
@Mark Cloyd
“address = VALUES(address)
I get an error here as Parse error: syntax error, unexpected '='
Any idea of how to get this script to work for fields that are enclosed with double quotes so that fields with commas in them don't get read as a new entry?
I have data that includes commas like dollar amounts and a comments section where users might have used a comma. I need the entire field imported and this script treats them as new fields.
Thanks, very good csv importer.
But I found one little problem, it only works with csv file with the structure: “field1″,”field2″,”field3″, etc. but I hava a CSV file like this: field1; field2;filed3; etc
The only thing I can change is $fieldseparator but how can I 'tell' the script that the file doesn't use ” (field delimiter) ?
and another one with $fielddelimiter (” or nothing)
My ideia was a combobox with $fieldseparator (, or
Előre is köszönöm.
I'm realy confused with this code!!
but I wont to try up!!
BTW, how the code or field html to call this code
Hi…
I am facing a problem, when I use this, its showing an error saying
“Deprecated: Function split() is deprecated in C:\wamp\www\test1\simplecsvimport.php on line 64
File is not writable, check permissions. Found a total of 41 records in this csv file. "
Pls reply, what's wrong!
thanks in advance!
Great script! Tnx a lot
[...] legend.ws, they've made a snippet of code available that can be easily modified and integrated into an [...]
Hi, This script is great. I have one problem though. Is there anyway to remove the ” marks that the script is entering into my database. They are surrounding each cell entry.
Rearlly worked with php
Paglu Just Chill
Handy script. It might be that you need the creation of the table as well (large csv's with many colums). Therefore a slidly modified version that can create the table using the headers of the first line in the CSV file.
Köszönöm szépen. from South Korea.
I want my csv file to get checked with the database.
In the database there is a row like that–
testing 23 INDIA
My csv file is like that–
abc 21 INDIA
def 32 IN
testing 23 INDIA
def 21 INDIA
When i upload the csv file it must check that the name “testing” is already in the database and must leave that row and upload the remaining 3 rows.
Is it possible to do.
Kérem, segítsen.
Köszönöm.
THANK U SOO MUCH FOR PROVIDING THIS CODE … THANK U ….
Thanks so much, this is very very helpful!
Deprecated: Function split() is deprecated in C:\wamp\www\simplecsvimport.php on line 66
Please help to solve it.
This is just the information I was looking for! I will use this script to import csv data into mysql.
Code to import csv file to mysq using Php:-
Firstly make all Acess sheets in to excel and excel sheet save as csv file
Köszönjük!
It works like a charm!
Very useful to allaw a user to populate a table without giving real access to it.
Köszönöm még egyszer
File is not writable, check permissions. Found a total of 1 records in this csv file.
Please help me to solve this problem. i haven't create that output.sql file
I'll definitely use this one. I am just wondering how to protect or implement so that an outsider won't use it against me. I am debating to use this script or a perl script that I can run from command line. Köszönöm.
Hi,
i use this script and works fine for me. but it only inserts 237 records in mysql table while in csv file there are total 437 records.
Hi im newbie on php. and need help. i need to load a single csv file and feed 2 mysql tables. but the data in csv file dont have the same structure as in mysql table. also have problems with date format and commas inside data.
mysql table1
id,name,email,status
mysql table 2
id,book_name,date_book_out,date_book_in
csv file
10052,”MikeParker”,”mike@email.net”,”active”
10052,”Before the Season Ends, rt526″,2011/01/10,2011/01/25
Köszönöm
Hi guys,
Please help me in this script. It only inserts 240 records in database.
It's not such a good script… how to deal with a few thousends or more records?
It aint nice to the database to run thousends of queries when you could do a much better import by storing maybe 1000 lines in 1 import..
I have read your post thoroughly and got mind blowing information…. Please send me mail if your are going to improve something advance..
Köszönet ..
natural suppliments
I just want to thank you for sharing your information and your website, this is simple, but good article I have ever seen, I like it, and I learned something today! Köszönjük!
maquinas de bordar
Hy
The script is fine, working great, but i need an advice
My table has 3 colomns:
id, code and name
I allready have some data inserted, and i want to insert only the info that's mesing.
I need to check only by cod. So if the code exists , the scipt shold not inserted.
Thanks in advance for advices.
Best Regards,
Stefan
Thanks for your informations
I've already bookmarked this article and will definitely refer this article
to all my close friends and colleagues. Köszönöm a kiküldetés!