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.


Fájl letöltése itt

135 Comments

Jake február 25, 2007 at 06:31

Nagyon hasznos, köszönöm.

S. Martinez február 22, 2007 at 12:17

É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.

Len Lulow február 28, 2007 at 20:11

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"; /*********** ************************************************** *******************************/ [...]

hfvd október 24, 2007 at 12:44

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. [...]

»CSV import június 7, 2008 at 10:29

[...] /******************************************** ************************************************/ / * 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"; /*********** ************************************************** *******************************/ [...]

Dani augusztus 25, 2008 at 08:06

Wow hűvös ... volt ötlete után olvassa el a kódolás ... köszönöm a sok

steve augusztus 31, 2008 at 07:04

Ö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 ...?

Joseph szeptember 3, 2008 at 12:39

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

ollyd szeptember 9, 2008 at 06:35

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.

Rengaraj szeptember 12, 2008 at 12:11

Kapok ezt a hibát fájl nem található. Győződjön meg róla, hogy meg a helyes utat.

Rengaraj szeptember 12, 2008 at 12:16

Tud valaki válaszolni gyors nekem van egy csv file bbqrest.csv a helyes útvonalat (root) ..

Steve szeptember 12, 2008 at 12:19

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.

Robbie szeptember 24, 2008 at 12:19

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.

Robbie szeptember 24, 2008 at 14:27

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

Robbie szeptember 24, 2008 at 14:27

)
/ / 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 + +;
}
}
}

Brad szept 26, 2008 at 02:43

é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?

ASCASC szeptember 27, 2008 at 05:04

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)

Roelof szept 30, 2008 at 08:06

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?

Phillip október 1, 2008 at 10:26

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?

admin október 6, 2008 at 00:27

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.

Fidel Gonzo október 10, 2008 at 05:12

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);
}

login okt 20, 2008 at 18:10

Szép munka legfőbb ;-)

enim okt 23, 2008 at 04:16

nem beilleszteni az adatbázis tábla, ahol akarom ki ..: (

gén október 29, 2008 at 09:28

É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?

MarkFromHawaii november 19, 2008 at 04:00

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.

admin december 1, 2008 at 02:10

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.

Chris december 18, 2008 at 02:31

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

admin december 18, 2008 at 05:35

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

Gary Pearman február 23, 2009 at 07:25

Ami az idézeteket probléma, ha csak ezt:

$ Linearray = preg_split ("/,(?=(?:[^ \ "] * \" [^ \ "] * \ ")*(?![^ \"] * \ "))/", $ line );

Cheers,
Gaz.

Stanley Zdun augusztus 24, 2009 at 18:19

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

admin augusztus 26, 2009 at 03:20

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 :)

Claus szept 11, 2009 at 12:59

Ü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

Adrian szeptember 13, 2009 at 19:03

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

Okoth szeptember 18, 2009 at 08:16

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?

admin október 3, 2009 at 05:54

@ 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.

admin október 3, 2009 at 05:58

@ 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)

admin október 3, 2009 at 06:02

@ 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.

Andy Brotherton október 4, 2009 at 02:14

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"

admin október 5, 2009 at 08:46

@ 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?

MAPA október 7, 2009 at 07:24

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?

admin október 8., 2009 at 16:48

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

Nathan okt 20, 2009 at 05:59

Szia, azt mondja nekem a rekord szám, de nem hozta meg az adatokat adatbázisba

Remélem tud segíteni

Nathan

phpwebdesigner2010 december 8, 2009 at 21:39

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

Mark Cloyd január 3, 2010 at 19:33

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!

Mark Camp jan 11, 2010 at 00:10

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";
}

rajdeo február 4, 2010 at 07:21

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

Kish február 17, 2010 at 02:31

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

Gary március 2, 2010 at 11:26

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

data_type március 5., 2010 at 12:03

[...], 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 ... [...]

Jeremie március 9, 2010 at 12:39

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

admin március 16, 2010 at 12:28

@ 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)

admin március 16, 2010 at 12:30

@ 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ó.

béke április 13, 2010 at 10:52

Hogyan hagyja ki az első sor / sor, ami egy fejléc a csv fájlt, és helyezze be a többi adatot a db?

Carl április 18, 2010 at 11:00

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?

béke április 20, 2010 at 11:22

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

Ap.Muthu április 28, 2010 at 06:02

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`);

Alejandro május 11, 2010 at 04:03

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

Saman június 3, 2010 at 01:10

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

Coulton június 5, 2010 at 09:55

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

GIO június 5, 2010 at 14:55

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")

newbie június 14, 2010 at 09:41

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ó.

Pollux június 24, 2010 at 10:28

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);
}

Darwin July 23rd, 2010 at 1:21 AM

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?

Darwin July 23rd, 2010 at 1:23 AM

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?

Haan August 7th, 2010 at 5:11 AM

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

vinita August 17th, 2010 at 6:49 AM

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…

Radikale August 18th, 2010 at 6:35 PM

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!

Roy August 20th, 2010 at 12:00 PM

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

Roy August 20th, 2010 at 12:02 PM

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”;

Matt September 8th, 2010 at 11:18 PM

This works very well. Köszönöm!

oram September 10th, 2010 at 1:17 AM

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

Online Pharmacy September 11th, 2010 at 9:22 AM

8pills.com is your one stop health care solution. 8pills.com provide best of the class Generic and Branded medications.

zeshan September 16th, 2010 at 10:05 AM

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

bhanu September 19th, 2010 at 10:44 PM

@zeshan

use explode instead of split

susylu September 21st, 2010 at 2:54 PM

kaundo le doy descarga me aparecen muchos zips todos los archivos los ubico en una sola carpeta?¿

Online Education September 29th, 2010 at 10:26 AM

I think this is best for shopping cart's csv into sql.

rashmi October 10th, 2010 at 8:41 AM

<?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

Seelam Ravi Kumar October 19th, 2010 at 5:26 PM

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

neady October 25th, 2010 at 6:21 PM

Having exact same issue, can anyone help please?

Roy :
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

mike November 18th, 2010 at 9:48 PM

@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.

admin November 29th, 2010 at 4:57 PM

@mike
Can you try adding:
set_time_limit(0);
right at the beginning? (right after the php opening tag)

Evan Islam November 30th, 2010 at 5:23 PM

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

slug December 1st, 2010 at 5:29 PM

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?

Craig December 8th, 2010 at 1:20 AM

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

Andrew Fish December 9th, 2010 at 4:26 PM

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

Andrew Fish December 10th, 2010 at 3:28 PM

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

pruthvi December 23rd, 2010 at 8:52 AM

the code is returning a statement that it couldnt find the csv file…
wat might be the problem….

pruthvi December 23rd, 2010 at 9:30 AM

latest development the code can detect the no of lines in the csv file but its not displaying it in the table

pruthvi December 23rd, 2010 at 9:31 AM

same problem with me @Andrew Fish

pruthvi December 23rd, 2010 at 9:48 AM

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

Suman December 23rd, 2010 at 2:12 PM

Grate Code It's really helpful to all PHP developer.

Suman December 23rd, 2010 at 2:16 PM

@pruthvi

Hi,

Please use the bellow given code……

Suman December 23rd, 2010 at 2:18 PM

Suman :
@pruthvi
Hi,
Please use the bellow given code……

pruthvi December 24th, 2010 at 4:09 PM

ya the code works but nw am getting my data enclosed in inverted commas @Suman

Alfa December 26th, 2010 at 6:32 PM

Thank you for sharing excel to mysql script, this is very useful to me.

Warren December 28th, 2010 at 9:37 PM

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 December 28th, 2010 at 10:10 PM

@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

Warren December 28th, 2010 at 10:30 PM

Just a slight correction to my request, the two tables in the MqSQL database I mentioned are actually called:

keywords_categories

kulcsszavak

Warren December 29th, 2010 at 1:31 AM

@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”;

?>

Warren December 30th, 2010 at 6:57 PM

Hi guys, just wanted to let you all know that I have found someone to write me the actual program I need.

Khaled A January 11th, 2011 at 9:46 AM

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 January 11th, 2011 at 10:35 AM

@Khaled A
How can i export UTF8 excel to output.sql
köszönöm

joofoo January 11th, 2011 at 11:16 AM

@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,

ronbowalker January 15th, 2011 at 5:54 PM

@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

qwewe January 23rd, 2011 at 2:56 PM

@Mark Cloyd
“address = VALUES(address)
I get an error here as Parse error: syntax error, unexpected '='

Rusty February 3rd, 2011 at 2:56 PM

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.

Jorge Dias March 14th, 2011 at 7:01 PM

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) ?
My ideia was a combobox with $fieldseparator (, or ;) and another one with $fielddelimiter (” or nothing)

Előre is köszönöm.

justkid April 7th, 2011 at 10:25 AM

I'm realy confused with this code!!
but I wont to try up!!
BTW, how the code or field html to call this code

umair May 2nd, 2011 at 7:39 AM

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!

Joln May 11th, 2011 at 7:52 AM

Great script! Tnx a lot

Working and parsing CSV text files & PHP May 15th, 2011 at 5:52 PM

[...] legend.ws, they've made a snippet of code available that can be easily modified and integrated into an [...]

Matt Fleming June 15th, 2011 at 3:16 PM

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.

Jhon July 3rd, 2011 at 10:14 AM

Rearlly worked with php
Paglu Just Chill

Bram August 21st, 2011 at 7:05 PM

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.

J-Hong August 31st, 2011 at 1:58 PM

Köszönöm szépen. from South Korea.

Amit September 5th, 2011 at 10:11 AM

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.

Sonia Jayaprakash September 15th, 2011 at 10:23 AM

THANK U SOO MUCH FOR PROVIDING THIS CODE … THANK U ….

Nick September 15th, 2011 at 8:22 PM

Thanks so much, this is very very helpful!

arjun p yadav September 17th, 2011 at 8:19 AM

Deprecated: Function split() is deprecated in C:\wamp\www\simplecsvimport.php on line 66

Please help to solve it.

Dereva plantarea trandafirilor Jenela October 13th, 2011 at 8:12 AM

This is just the information I was looking for! I will use this script to import csv data into mysql.

Manmohit verma October 15th, 2011 at 6:27 AM

Code to import csv file to mysq using Php:-
Firstly make all Acess sheets in to excel and excel sheet save as csv file

Fernando Murrieta October 15th, 2011 at 6:07 PM

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 :)

raja November 2nd, 2011 at 12:12 PM

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

NetWeaver 7.3 November 3rd, 2011 at 6:04 AM

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.

Ankur November 16th, 2011 at 11:15 AM

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.

Miguel November 24th, 2011 at 3:57 AM

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

Ankur December 7th, 2011 at 4:35 PM

Hi guys,

Please help me in this script. It only inserts 240 records in database.

Rolf December 8th, 2011 at 5:05 PM

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..

natural suppliments December 29th, 2011 at 8:19 AM

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

maquinas de coser December 30th, 2011 at 6:28 AM

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

Stefan December 30th, 2011 at 8:18 AM

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

alen January 1st, 2012 at 6:04 PM

Thanks for your informations

Schaumburg Personal Trainer January 9th, 2012 at 1:35 PM

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!

Szólj hozzá!

A megjegyzés