PHP script til at importere csv-data til mysql

Dette er et simpelt script, der vil give dig mulighed for at importere csv-data i din database. Dette kommer praktisk, fordi du bare kan redigere de relevante felter, uploade den sammen med den csv-fil og kalder den fra nettet, og det vil gøre resten.

Det giver dig mulighed for at angive den afgrænser i denne csv-fil, hvad enten det er en koma, en fane osv. Det giver dig også mulighed for at vælge den linje separator, giver dig mulighed for at gemme output til en fil (kendt som en data sql dump).

Det tillader dig også at inkludere et tomt felt ved begyndelsen af ​​hver række, som normalt er en auto interval heltal primær nøgle.

Dette script er nyttigt, især hvis du ikke har phpMyAdmin, eller du ikke vil have besværet med at logge ind og foretrækker et par klik løsning, eller du blot er en kommandoprompt fyr.
Bare sørg for at bordet er allerede oprettet, før du prøver at dumpe data.
Venlige sende dine kommentarer, hvis du fik nogen fejlrapport.


Hent filen her

135 Kommentarer

Jake 25 februar 2007 kl 06:31

Meget nyttigt, tak.

S. Martinez 22 februar 2007 kl 12:17

Jeg plejer at bruge phpMyAdmin, men sandt, hvis man ikke har det installeret, og ikke har shell adgang (ligesom de fleste af den delte hosting-udbydere), kan dette komme i meget handy.

Len Lulow 28 feb 2007 kl 20:11

Takket være en masse denne sparet masser af tid! Nice-script.

[...] Nå, i dag vil jeg præsentere dig med en anden metode til at få din CSV-fil i SQL, PHP-kode. Til dette stykke kode, går den fulde kredit til legende. Du skal sørge for at databasen er allerede oprettet, før du dumpe den dato. /************************************************* *******************************************/ / * Kode på http: / / legend.ws / blog / tips-tricks / csv-php-mysql-import / / * Rediger oplysningerne nedenfor for at afspejle de relevante værdier /****************** ************************************************** ************************/ $ databasehost = "localhost"; $ databasename = "test"; $ databasetable = "prøve"; $ databaseusername = " test "; $ databasepassword =" "; $ fieldseparator =", "; $ lineseparator =" n "; $ csvfile =" bbqrest.csv "; /***************** ************************************************** *************************/ / * Vil du tilføje et ampty felt ved begyndelsen af ​​disse poster? / * Dette er nyttigt, hvis du har en tabel med det første felt være en AUTO_INCREMENT heltal / * og CSV-filen ikke har, såsom tomme felt før de poster. / * Sæt 1 for ja og 0 for ingen. BEMÆRK: Må ikke sættes til 1, hvis du ikke er sikker. / * Det kan dumpe data i de forkerte felter, hvis dette ekstra felt ikke findes i tabellen /***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / * Vil du gemme mysql forespørgsler i en fil? Hvis ja sæt $ gemme på 1. / * Tilladelse om filen skal sættes til 777. Enten uploade en prøve fil via FTP og / * ændre tilladelserne, eller udføre ved prompten: røre output.sql & & chmod 777 output.sql /******************* ************************************************** ***********************/ $ save = 1; $ uddatafil = "output.sql"; /*********** ************************************************** *******************************/ [...]

hfvd 24 okt 2007 kl 12:44

Hej, en lille modifikation for auto forøgning værdier i kolonne 1 (id felt)

se variable $ count.

Ola, Enrico.

/ / $ Con = @ mysql_connect ($ databasehost, $ databaseusername, $ databasepassword) or die (mysql_error ());
/ / @ Mysql_select_db ($ databasename) or die (mysql_error ());

$ Linjer = 0;
$ Forespørgsler = "";
$ Linearray = array ();

$ Count = 0;

foreach (split ($ lineseparator, $ csvcontent) som $ linie) {

$ Count = $ count + 1;

$ Linier + +;

$ Line = trim ($ linje, "\ t");

$ Line = str_replace ("'"," \ '", $ line);

$ Linearray = eksploderer ($ fieldseparator, $ line);

$ Linemysql = implodere ("','",$ linearray);

$ Query = "INSERT INTO` din db tabellen `VALUES ('$ count', '$ linemysql');";

$ Forespørgsler .= $ forespørgsel. "\ N";

@ Mysql_query ($ query);
}

/ / @ Mysql_close ($ con);

[...] På en lignende bemærkning, her er der en pre-made script som dens forfatter siger vil importere en CSV-fil til MySQL: PHP script til at importere CSV data til MySQL. [...]

»CSV import juni 7, 2008 kl 10:29

[...] /******************************************** ************************************************/ / * Kode på http://legend.ws/blog/tips-tricks/csv-php-mysql-import/ / * Rediger oplysningerne nedenfor for at afspejle de relevante værdier /************* ************************************************** *****************************/ $ databasehost = "localhost"; $ databasename = "xxxxx"; $ databasetable = "xxxx" ; $ databaseusername = "xxxx"; $ databasepassword = "xxxx"; $ fieldseparator = ","; $ lineseparator = "n"; $ csvfile = "xport/2008_BF.csv"; /********* ************************************************** *********************************/ / * Vil du tilføje et ampty felt i begyndelsen af ​​disse optegnelser ? / * Dette er nyttigt, hvis du har en tabel med det første felt være en AUTO_INCREMENT heltal / * og CSV-filen ikke har, såsom tomme felt før de poster. / * Sæt 1 for ja og 0 for ingen. BEMÆRK: Må ikke sættes til 1, hvis du ikke er sikker. / * Det kan dumpe data i de forkerte felter, hvis dette ekstra felt ikke findes i tabellen /***************************** ************************************************** *************/ $ addauto = 0; /****************************** ************************************************** ************/ / * Vil du gemme mysql forespørgsler i en fil? Hvis ja sæt $ gemme på 1. / * Tilladelse om filen skal sættes til 777. Enten uploade en prøve fil via FTP og / * ændre tilladelserne, eller udføre ved prompten: røre output.sql & & chmod 777 output.sql /******************* ************************************************** ***********************/ $ save = 1; $ uddatafil = "output.sql"; /*********** ************************************************** *******************************/ [...]

Dani August 25, 2008 kl 08:06

Wow er cool ... fik ideen efter at have læst din kodning ... tak en masse

steve 31 August 2008 kl 07:04

Total newbie - at rive mit hår ud forsøger at importere Excel CSV i phpMyAdmin (på en Mac). Ville elske at vide præcis, hvor og hvad jeg gør med dette php script ...?

Joseph Sep 3, 2008 kl 12:39

Steve,

Du ville placere denne script ind i et web-adgang til mappen, efter ændring af variabler, der skal ændres. Læs kommentarer i scriptet for at finde ud af, hvad du behøver at specificere. Derefter kalder scriptet op i en webbrowser, som:

http://www.example.com/path-to-script/simplescvimport.php

ollyd 9 September 2008 kl 06:35

det ville være en god idé at tilføje forhindre hoveder i det csv fra at blive sendt ind i databasen. Eller for at oprette et script, der trækker ud den første række og skaber en db ved hjælp af disse værdier som kolonnenavne.

Rengaraj 12 september, 2008 kl 12:11

Jeg får denne fejl Fil ikke fundet. Sørg for at du har angivet den korrekte sti.

Rengaraj 12 september, 2008 kl 12:16

Kan nogen ét svar hurtigt Jeg har en csv-fil bbqrest.csv på rette vej (root) ..

Steve sep 12, 2008 kl 12:19

Rengaraj,
CSV-filen skal være i samme sted som den PHP fil.
Også, behøver du ikke virkelig nødt til at bruge det samme csv-fil navn.
bbqrest.csv er et eksempel, erstatte denne fil navnet med dine egne.

Robbie 24 September 2008 kl 12:19

Tager ikke højde for områder som denne linje:
Fname, Lname, "Company, Inc", By, stat, Zip

Selskabet og Inc komme opdelt i to forskellige kolonner.

Robbie 24 September 2008 kl 14:27

Nå, her er den rette til min forrige kommentar:

indsætte dette i mellem:

$ Linearray = eksploderer ($ fieldseparator, $ line);

... Indsæt kodestykket nedenfor ....

$ Linemysql = implodere ("','",$ linearray);

Finder og holder alle "Stuff, Flere Stuff" sammen, før imploding det.

$ A = "";
$ B = "";
$ Qoutecount = 0;
for ($ x = 0; $ x -1) {
$ Qoutecount + +;
if ($ qoutecount == 1)
$ A = $ x; / / store i første omgang
elseif ($ qoutecount == 2) {
$ Quotecount = 0;
$ B = $ x; / / gemme anden instans
/ / Der kan det ... samle alle elementer fra $ a til $ b til $ a og ignorere elementer alt efter $ a til $ b i nye system;
$ Newa = ""; / / initialisering ny streng.
for ($ z = $ a, $ z $ a & & $ y

Robbie 24 September 2008 kl 14:27

)
/ / Springe, fordi den falder ind under de dårlige array-elementer
andet
$ Newarray [$ y] = str_replace ('"',",$ linearray [$ y]);
$ Linearray = array_values ​​($ newarray) / / reset nøglerne til den nye række
$ X + +;
}
}
}

Brad 26 SEP 2008 kl 02:43

Jeg får det første så meget af det afskåret og resten bare kode i min browser. Jeg ved, php virker, fordi resten af ​​sitet virker.
Jeg gjorde opgradere til php5 gør det?

ASCASC 27 September 2008 kl 05:04

Brad, hvis du havde downloadet det tidligere end i sidste uge, erstatte '<?' øverst med '<? php' (fjern mellemrum)

Roelof 30 sep, 2008 kl 08:06

Robbie, tak for dig Derudover er det meget velkommen. Desværre virker det ikke det samme, når jeg kopierer det. Jeg synes der mangler noget, fordi koden er spredt ud over to stillinger.

Kunne du kontrollere den kode, som vist her? Er der noget der mangler?

Phillip 1 okt 2008 kl 10:26

Hej, nice script tak. Når du kører det jeg får:
Fatal error: Maximum execution på 30 sekunder overskredet i on line 63

Er der noget jeg kan gøre for at komme omkring dette?

admin 6 oktober, 2008 kl 00:27

Hvor stor er den fil, du forsøger at importere?
Under alle omstændigheder prøve at tilføje følgende linje efter den første åbning tags:
set_time_limit (300);
Dette vil give scriptet op til 5 minutter (300 sekunder) af gennemførelsestid.
Udskiftning af 300 med 0 vil gøre det muligt at tage så meget tid som nødvendigt.

Fidel Gonzo 10 oktober 2008 kl 05:12

Hej alle,

Jeg lavede en mindre ændring til din kode, så det virker som en CSV-importør, som det skal.

CSV-s første linje skal holde kolonnenavne, du vil importere, så ændrer foreach løkken:
foreach (split ($ lineseparator, $ csvcontent) som $ linie) {

$ Linier + +;

$ Line = trim ($ linje, "\ t");

$ Line = str_replace ("\ r ","",$ line);

/ * Får kolonnenavnene fra første linje i CSV * /
if ($ linjer == 1) {
$ Kolonner = eksploderer ($ fieldseparator, $ line);

$ Columnsql = implodere (",",$ kolonner);

echo $ columnsql;
fortsætte;
}

/************************************
Denne linje undslipper den særlige karakter. fjerne det, hvis oplysningerne allerede er flygtet i CSV-filen
************************************/
$ Line = str_replace ("'"," \ '", $ line);
/*************************************/

$ Linearray = eksploderer ($ fieldseparator, $ line);

$ Linemysql = implodere ("','",$ linearray);

if ($ addauto)
$ Query = "INSERT INTO $ databasetable ($ columnsql) VALUES ('$ linemysql');";
andet
$ Query = "INSERT INTO $ databasetable ($ columnsql) VALUES ('$ linemysql');";

$ Forespørgsler .= $ forespørgsel. "\ N";

@ Mysql_query ($ query);
}

login 20 oktober 2008 kl 18:10

Flot arbejde Chief ;-)

enim 23 Oktober 2008 kl 04:16

den indsatte ikke i databasen bordet, hvor jeg vil have det indsat ..: (

gen 29 okt 2008 kl 09:28

Jeg kan kun få den første linje af min CSV-fil, der skal importeres i databasen.
Her er en kopi af logfilen:

indsætte i produktion værdier (", '2008-10-21 ', '50', '50 ', '50', 'Dette er den første noter linje', 'Dette er noter linie 2', 'Dette er noter linie 3 ', '0000-00-00', '0000-00-00 ', '0000-00-00', '456 Morningside Ave ',' ste. 512 ',' Brooklyn ',' NY ', '10023', 'Joe', 'Kunde 1');
indsætte i produktion værdier (", '2008-10-09 ', '50', '50 ', '50', 'Dette er den første toner linje',",",' 2008/10/09', '2008 -10-14 ', '0000-00-00', '456 Morningside Ave ',' ste 512 ',' Brooklyn ',' NY ', '10023', 'Joe', 'Kunde 1').
indsætte i produktion værdier (", '2008-10-14 ', '25', '25 ', '25', 'NOTER 1.',",",' 2008/10/14', '2008-10 til 17 ',' NULL ', '555 sted', 'suite 123', 'New York', 'nye y', '10001 ',' Joe ',' Navn 1 ');
indsætte i produktion
indsætte i produktion
indsætte i produktion værdier (", '2008-10-17 ', '50', '50 ', '50', 'Dette er den første toner linje',",",' 2008/10/03', '0000 -00-00 ', '0000-00-00', '456 Morningside Ave ',' ste 512 ',' Brooklyn ',' NY ', '10023', 'Joe', 'Kunde 1').
indsætte i produktion værdier (", '2008-10-18 ', '25', '25 ', '25', 'NOTER 1.',",",' 2008/10/04', '0000-00-00 ', '0000-00-00', '555 sted ',' suite 123 ',' New York ',' nye y ', '10001', 'Joe', 'Navn 1');
indsætte i produktion
indsætte i produktion værdier (", '2008-10-20 ', '34', '34 ', '34', 'nye toner',",",' 2008/10/06', '0000-00-00 ', '0000-00-00',",",",",",' Steve',");
indsætte i produktion værdier (", '2008-10-21 ', '12', '12 ', '12', 'endnu nyere noter',",",' 2008/10/07', '0000-00- 00 ', '0000-00-00',",",",",",' mark',");
indsætte i produktion
indsætte i produktion
indsætte i produktion
indsætte i produktion
indsætte i produktion værdier (", '2008-10-16 ', '0', '0 ', '0', 'senere stadig',",",' 2008/10/12', '0000-00-00 ', '0000-00-00',",",",",",",");
indsætte i produktion værdier (", '2008-10-17 ', '0', '0 ', '0', 'senere stadig',",",' 2008/10/13', '0000-00-00 ', '0000-00-00',",",",",",");
indsætte i produktion værdier (", '2008-10-18 ', '0', '0 ', '0', 'senere stadig',",",' 2008/10/14', '0000-00-00 ', '0000-00-00',",",",",",");
indsætte i produktion
indsætte i produktion værdier (", '2008-10-01 ', '34', '34 ', '34', 'allernyeste',",",' 2008/10/02', '2008-10 til 04 ', '2008-10 til 04',",",",",",' Bruce');
indsætte i produktion værdier (",");

Det siger, det er at indsætte 20 poster, men kun den første der gør dem i databasen. Nogen tanker?

MarkFromHawaii 19 november, 2008 kl 04:00

Hej alle,

Tak for scriptet. Jeg er noob på PHP og MySQL, så jeg virkelig sætter pris på noget som dette. Jeg kom så langt som genererer "Fil kan ikke skrive, skal du kontrollere tilladelser" fejlmeddelelse i min browser. Kan nogen venligst forklare den kommentar om indstilling tilladelse til 777? Jeg bruger et Excel-genereret. Csv-fil? På forhånd tak.

admin December 1, 2008 kl 02:10

Hej Mark,

først, er det med henvisning til den fil, du valgte i $ uddatafil variabel.
sekund, denne fil skal være skrivbare. Jeg går ud fra du bruger Linux, ikke Windows, da dette er generelt ikke et problem med Windows.
På linux, blot SSH til maskinen, skift til det bibliotek, hvor output filen er, og skriv: chmod 777 filnavn
hvor 'filnavn' er selve filnavnet.
Hvis du ikke har SSH, mange FTP-klienter understøtter tilladelse forandring. Til dette formål, i den mappe, der indeholder outputfilen FTP, og derefter skal du vælge denne fil, og find fra dette ftp software mulighed for at ændre tilladelse. Sæt den til 777, eller 'læse, skrive og execute' for alle.

Chris 18 Dec 2008 kl 02:31

Hej alle,

Kærlighed dette script, og det fungerede fint, nu pludselig scriptet plejer indsætte records. Scriptet er færdig, og selv udgange pladen tæller, men ikke røre databasen på alle ...

Nogen ideer?

Thanks
C

admin 18 Dec 2008 kl 05:35

Kære Chris,

Udskift:
@ Mysql_query ($ query);
med:
@ Mysql_query ($ query) or die (mysql_error ());

og lad mig vide hvilken fejl det giver dig

Gary Pearman 23 februar 2009 kl 07:25

Med hensyn til citater problemet, kan du bare bruge denne:

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

Cheers,
Gaz.

Stanley Zdun 24 Aug 2009 kl 18:19

den siger at indlæse dette i database

indlæse data lokalt infile 'Sti' i tabel Tabel fields terminated by ',' linjer terminated by '\ n';

jeg ændre stien og fremlægge sit gå ind, men det giver mig en fejl, at dens en forkert syntaks koden 1064

kan nogen give mig nogle råd om hvad de skal gøre

tak
stan

admin aug 26, 2009 kl 03:20

Hej Stanley, er problemet med den enkelte anførselstegn. Bloggen software her omskrivninger dem. Du skal blot udskifte 'og' med '

PS: kommandoen ovenfor, er til direkte at indlæse en CSV-fil ind i databasen fra mysql prompten. Det er rart, men ikke relateret til ovenstående script :)

Claus 11 September 2009 kl 12:59

Hej alle!

Synes at have scriptet arbejde ... dog forekom, at det ikke skrive data til mysql ...
Ligesom med Chris: Manuskriptet er færdig, og selv udgange pladen tæller, men ikke røre databasen på alle ... men fortæller mig: Fundet i alt 1 poster i denne csv-fil.

Hvad gør jeg forkert (im en noob på PHP og MySQL)

Thanks
Claus

Adrian 13 sep 2009 kl 19:03

Hej Alle
Jeg bruger Drupal til at bygge en ny hjemmeside, den udfordring, jeg har lige nu er, at jeg nødt til at importere data fra en CSV-fil ind i en MySQL-database, som har delt borde, derfor nogle af de felter, i hvilken jeg behov for at importere csv-data er i forskellige dele af den samme database, vil dette script arbejde for mig? Hvis ikke kan det CSV-fil importeres efter en anden metode?

Oplys venligst, tak for enhver hjælp.

Regards
Adrian

Okoth 18 september 2009 kl 08:16

Tak for scriptet. Meget forståeligt.

Hvordan kan jeg ændre dette script, så det henter og gemmer en CSV-fil fra internettet ind i MySQL?

admin 3 okt 2009 kl 05:54

@ Adrian
Hej Adrian.
Drupal, som du bemærkede, har komplekse tabelstrukturer. Afhængigt af hvilken slags data, du importerer, er det meget sandsynligt, at disse data skal opdeles i flere tabeller, som regel med en fælles udenrigs-nøgle såsom node id.
Desværre, vil scriptet ovenfor ikke hjælpe med at gøre det.

admin 3 okt 2009 kl 05:58

@ Okoth
Hej Okoth.

Mest sandsynligt, kan du slippe af linjer 33-54 og erstatte dem med denne ene linje:

$ Csvcontent = @ file_get_contents ("http://...");

erstatte prikkerne med de relevante url (direkte url til CSV-fil)

admin 3 okt 2009 kl 06:02

@ Claus
Hej Claus.
Er CSV virkelig indeholder en enkelt post?

Da scriptet nået den fase, hvor det output antallet af poster, jeg formoder det ikke svigter, når det er tilsluttet databasen (linjerne 56-57) så det er ikke problemet.

Det er muligt, at forespørgslen til at indsætte data svigter.
Prøv at erstatte linje 88 med:
mysql_query ($ query) or die (mysql_error ());

og kontrollere, hvad fejl du får.

Andy Brotherton 4 Oktober 2009 kl 02:14

Hej,

Jeg vil virkelig gerne bruge dette script, men jeg er ikke sikker på, hvad jeg gør forkert. Jeg får det samme problem, der er nævnt ovenfor, med data indlæses ikke i db. Den finder det korrekte antal rækker, men intet viser i db.

Jeg skiftede linje 88 @ mysql_query ($ query) or die (mysql_error ());

og få dette budskab "Kolonne antallet stemmer ikke overens med antallet af værdier i række 1"

admin Oktober 5, 2009 kl 08:46

@ Andy Brotherton : Dette betyder, at forespørgslen forsøger at indsætte en rekord med et antal kolonner, der ikke passer, at af databasen bordet.

1) Er du sikker på, at CSV-fil har nøjagtig samme antal kolonner som tabellen i databasen?
2) Er feltet separatoren i denne CSV-fil virkelig et komma? eller er det en fane for eksempel eller andet? Hvis det ikke er et komma, ændre værdien af ​​$ fieldseparator på linie 12
3) Tabellen skal allerede oprettet i databasen, før du forsøger at indlæse data ind i det. Er du sikker på du har det?

MAFF 7 Oktober 2009 kl 07:24

Hvordan kan jeg tømme min allerede udfyldt skemaet, før du sætter den nye fil?
eller kan jeg opdatere en allerede eksisterende indgang?

Trunkere, UPDATE? Hvordan får jeg det i forespørgslen?

admin 8 okt 2009 kl 16:48

kommandoen er: trunkere tabelnavn.

Du kan indsætte følgende på linie 58:
@ Mysql_query ("trunkere $ databasetable");

men dette er ikke reversibel! så vær forsigtig

Nathan 20 Oktober 2009 kl 05:59

Hej, det fortæller mig rekord tæller, men ikke at lægge data ind i databasen

Håber du kan hjælpe

Nathan

phpwebdesigner2010 December 8, 2009 kl 21:39

Jeg har brug for at hente data automatisk fra en ekstern server. Dens en CSV-fil, og jeg har brug for at pakke det, og gemmer data i en MySQL-database, som jeg har oprettet. Der er flere databaser. Den første sektion nedenfor, er en af ​​de databaser, at nogen hjalp mig med, og det virker vidunderligt. Jeg har oprettet et cron job, og det henter den automatisk som planlagt. Men jeg har flere databaser og kan ikke få andre til at arbejde.

DETTE afsnit nedenfor virker fint!!
--------------------------

#! / Bin / bash

deleteparam = '-delete-efter';
# Deleteparam = "
# Directory = '-mappen-prefix = / $ HOME / myfolder / myfolder /'
directory = "
# Userpwd = '-http-user = blah-http-password = blah'

toUpper () {
echo $ 1 | tr "[: lavere:]" "[: upper:]"
}

# If [-z "$ 1"]; så
# Echo brug: $ 0 tabel
# Exit
# Fi

ZIP = navnet på data filen i ekstern server
ZIP = `toUpper $ ZIP`

# Filen i zip har en mindre _
DATA = navn i tabellen i min MySQL-database
DATA = `toUpper $ DATA`

# Rm $ TABLE.csv.zip
# Rm $ DATA.csv

cd / $ HOME / myfolder / myfolder /
####### Få bolig

wget -O $ ZIP.csv.zip
sove 10
####### Unzip det
pwd
ls-la

unzip-o $ ZIP.csv.zip
sove 10
####### Indlæse den

wget-verbose $ deleteparam $ bibliotek $ userpwd http://mywebsite/myfolder/import.php?table = $ DATA
sleep 300

###### Slette filerne

rm $ ZIP.csv.zip
rm $ DATA.csv
sove 10
_ ---------------------------
HELE DENNE ovenstående virker WONDERFUL

Dette er hvad jeg brug for hjælp til
--------------------------
1. Jeg har brug for et script til at tilføje til ovennævnte fil, der vil downloade fotos. Hvis du kan se nedenfor, jeg har brug for et script, der automatisk får den aktuelle dato og tid, at scriptet er løb. Der server har PIC fra de sidste 7 dage og er konstant opdateret. Når scriptet er løb det vil downloade data i tabellen, at jeg har oprettet.

2. Så jeg har brug for et script, der sætter spørgsmålstegn ved mysql database på udkig efter poster, der har billeder og derefter hente den faktiske fotos direkte fra deres eksterne servere. Denne csv-fil IKKE hente fotos, blot data, som jeg kan bruge til at køre et script til at hente fotos på et givent sted. Se nedenfor.
Nedenfor er de instruktioner, jeg har modtaget.

VEJLEDNING
Foto data hentes af HTTP. De billeder data opdateres en gang dagligt og kan hentes som en CSV-fil. Du kan derefter skrive et script ved hjælp af data fra CSV-filen til at pege tilbage til billederne på vores image server. Du skal levere en værdi for søgestrengen last_updt> 'ÅÅÅÅMMDD HH: MM: SS' for URL til at returnere data. Feltet last_updt er den dato, værdi for sidste gang, at et foto blev ændret på listen.

Du bliver nødt til at erstatte user_code og adgangskode sted holdere (XXXX) med login-oplysninger leveres til dig.

Trin 1: Du kan hente de primære børsnotering fotodata CSV-fil skal du gå til webadressen nedenfor.

Trin 2: Billederne tabeldata skal hente i en CSV-format.

Trin 3: Brug af Y-flag og ML Antal i de data, du kan linke tilbage til vores image steder.

Vores primære billede stien er som følger:

http://remoteserver/folder/folder/folder/Last3DigistsofML # / notering #. jpg

For eksempel-Det primære billede til notering nummer 1899430 er placeret på

http://remoteserver/folder/folder/1/430/1899430.jpg

Vores ekstra billede biblioteksstien struktur er som følger:

http://remoteserver/mlsphotos/full/PhotoPosition/Last3DigistsofML # / notering # _photoPosition.jpg

For eksempel-Det andet foto til notering nummer 1899430 er placeret på

http://remoteserver/folder/folder/2/430/1899430_2.jpg

Mark Cloyd 3 Januar 2010 kl 19:33

Fremragende script! Jeg havde brug for en lille hoppe start for et projekt, jeg arbejdede på, og det gjorde det trick.

Jeg lagde mærke til noget underligt dog, jeg har ændret scriptet til at arbejde med en form, og jeg lagde mærke til, at for at søge, var det sidste felt få buggered op, fordi den nye linje char (enten \ r eller \ n eller begge) var stadig optaget i MySQL-databasen.

Med henblik herpå, hvis du udskifter:
$ Line = str_replace ("\ r ","",$ line);

med:
$ Line = str_replace ('\ r',",$ line);

det vil holde tilbage fra at være et problem, som for den nye linje har jeg tilføjet en lille ting, der giver mulighed for indsættelse af nye poster, men opdateringer af eksisterende registreringer, så du ikke ender med dublerede poster. Øverst i koden nedenfor, vil du se, hvor jeg lavede den samme rettelse til den faktiske nye linje tegn.

$ Linemysql = implodere ("','",$ linearray);

$ Newlinemysql = str_replace ('\ n',",$ linemysql);

if ($ addauto) {

switch ($ databasetable) {

sagen ('adresse'):

$ Duplicatevals = "adresse = VALUES (adresse),
city ​​= VALUES (by), stat = VALUES (state),

zip = VALUES (zip) ";

break;

sagen ("ejer"):

$ Duplicatevals = "ownername = VALUES (ownername),
Hustype = VALUES (Hustype),

addresskey = VALUES (addresskey) ";

break;

}

$ Query = "INSERT INTO $ databasetable værdier (",'$ newlinemysql ')

PÅ DUPLICATE KEY UPDATE

$ Duplicatevals ";

} Else {

$ Query = "INSERT INTO $ databasetable værdier ('$ linemysql')

PÅ DUPLICATE KEY UPDATE

$ Duplicatevals ";

}

Også i min form jeg tilføjet tabelnavnet, og om jeg ville bordet for at være [Boolean] "addauto" eller ikke som et enkelt input fra en drop-down (kommasepareret), derefter delt resultatet ved toppen af ​​simplecsvimport script.

Endelig skal du huske at indstille indeksene i databasen for, "ON DUPLICATE ..." for at arbejde, vil automatisk trin ikke fungere i dette tilfælde, så du er nødt til at opsætte en sekundær indeks på auto tilvækst borde, de tabeller, don 't auto tilvækst og har unikke områder arbejder med enkelt indeks, hvis det er den rute, du gerne vil gå.

Jeg håber dette hjælper nogen!

Cheers!

Mark Camp 11 januar 2010 kl 00:10

Hej,

Lavet nogle ændringer. . Min txt-fil, der er 3 kolonner adskilt af en "|" (rør) karakter. Scriptet viser filen data, tæller rækker, men ikke indtaste data i databasen. Eventuelle kommentarer?

$ Csvcontent = fread ($ file, $ størrelse);

fclose ($ fil);

$ Con = @ mysql_connect ($ dbhost, $ dbusername, $ dbuserpassword) or die (mysql_error ());
@ Mysql_select_db ($ datakilde) or die (mysql_error ());

$ Lineseparator = "\ n";
$ Fieldseparator = "|";

$ Linjer = 0;
$ Forespørgsler = "";
$ Linearray = array ();

$ Count = 0;

foreach (split ($ lineseparator, $ csvcontent) som $ linie) {

$ Count = $ count + 1;

$ Linier + +;

$ Line = trim ($ linje, "\ t");

$ Line = str_replace ("\ r ","",$ line);

/************************************
Denne linje undslipper den særlige karakter. fjerne det, hvis oplysningerne allerede er flygtet i CSV-filen
************************************/
$ Line = str_replace ("'"," \ '", $ line);
/*************************************/

$ Linearray = eksploderer ($ fieldseparator, $ line);

$ Linemysql = implodere (""",$ linearray);

if ($ addauto)

$ Query = "INSERT INTO INDIKATORER værdier ('$ count', '$ linemysql');";

andet

$ Query = "INSERT INTO INDIKATORER værdier ('$ linemysql');";

$ Forespørgsler .= $ forespørgsel. "\ N";

@ Mysql_query ($ query) or die (mysql_error ());

echo "$ linemysql \ n";
}

rajdeo februar 4, 2010 kl 07:21

Jeg fik den ikke, hvordan det arbejder fra en fil kontrol. betyder først gennemse og vælge en fil og derefter sende hvor jeg skal ændres

Kish 17 Feb 2010 kl 02:31

Dette er meget nyttigt kode for mig ..
tak.

Hvordan kan jeg få gennemse filen i stedet for at skrive den fulde sti navn ..

Please hjælp i dette.

tak

Gary 2 marts 2010 kl 11:26

Tak, har denne kode virkelig hjulpet!

Hvordan ville jeg ændre det til at tillade en form, der skal vises, hvor brugeren surfer og vælger den CSV-fil, der skal importeres i tabellen?

Og også hvordan kunne jeg gøre det, så hver gang en ny fil er indsendt det ville tilsidesætte, hvad der er aktuelt er gemt i tabellen?

Mange tak

data_type 5 Marts 2010 kl 12:03

[...] At der var nogle meget gode egenskaber, at jeg kunne bruge til at hjælpe mig med at lære folk PL / SQL og XML. ITips og tricks PHP script til at importere csv-data til mysqlPHP script til at importere csv-data ind i mysql ... [...]

Jeremie 9 mar 2010 kl 12:39

Hej alle,

Hvordan kan jeg indeholder disse csv citater i dag "dag, måned efter, 2010" og staten "prov, stat" til en kolonne i min database? Jeg ser mange eksempler, men jeg kan ikke få det til at virke. Enhver hjælp ville godt.

AK, 10037591,1, "tirsdag 9 Marts, 2010 15:55:16", 59,7151, -151.4434,2.7,75.90,32, "Kenai halvøen, Alaska"
thx

admin 16 Mar 2010 kl 12:28

@ Kish
den nuværende kode tillader ikke at søge efter / upload af filen.
Du kan blot sætte CSV-fil i samme mappe som PHP script, og blot sætte $ csvfile variabel at være lig med filnavnet (uden sti)

admin 16 Mar 2010 kl 12:30

@ Gary
du kunne bruge en @ mysql_query ("trunkere $ databasetable"), lige efter @ mysql_select_db erklæring.
Men vær forsigtig, da dette vil udslette de data og kan ikke fortrydes.

fred 13 apr 2010 kl 10:52

Hvordan kan jeg springe den første linie / række, som er en header i csv-fil og indsætte resten af ​​data i db?

Carl 18 april, 2010 kl 11:00

Ligesom Gary, vil jeg være i stand til at overskrive en eksisterende rekord, men ved at opdatere den, ikke at slette alle data i db. Sp eller andet sted her omkring:

if ($ addauto)
$ Query = "INSERT INTO $ databasetable værdier (",'$ linemysql');";
andet
$ Query = "INSERT INTO $ databasetable værdier ('$ linemysql');";

Hvordan ville jeg kontrollere, om pladen eksisterer og derefter opdatere stedet for Insert?

Fred apr 20, 2010 kl 11:22

Scriptet læser en ekstra linje fra CSV-fil. fx hvis csv-filer har 25 registre viser, at der er 26 poster. Kan du venligst fortælle mig, hvor jeg går galt?

Jeg har tilføjet for at kontrollere, om det er en første linje og fortsætter loop, hvis virksomhedens første linje.

tak

Ap.Muthu 28 april, 2010 kl 06:02

Følgende gjorde det trick for mig:
LOAD DATA LOW_PRIORITY LOCAL INFILE
'C: \ \ Documents and Settings \ \ Administrator \ \ Desktop \ \ SigmaS1.csv'
I TABEL `mydb`. `MinTabel`
OMRÅDER flygtede af '\ \'
Terminated by ','
Eventuelt omgivet af "" '
LINES opsiges af '\ r \ n'
(`Bruger`, `pwd`, `Sno`, `amt`, `ActiveRec`);

Alejandro maj 11, 2010 kl 04:03

Det var meget nyttigt for mig ... men jeg havde brug for at lave en modifikation for læsning i store filer. Jeg var forvirret i starten, men så indså scriptet indlæser hele filen ind i hukommelsen (højre?). Så her er en tilpasset udgave af koden, der lyder linjer i et ad gangen. lyder det i filer, der ligner
begynde fil:
2,3, -1
1, -2,4
ende fil (med mange flere værdier). Jeg ville hver linje for at være en tabel indrejse og et id med det linjenummer, samt det første id repræsenterer størrelsen på bordet (som ikke vil ændre sig senere).

<? Php

/********************************/
/ * Kode på http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Rediger oplysningerne nedenfor for at afspejle de relevante værdier
/********************************/
$ Databasehost = "localhost";
$ Databasename = "tomoku";

$ Databaseusername = "rod";
$ Databasepassword = "rod";
$ Fieldseparator = "\ n";
$ Lineseparator = "\ n";

/ / Denne kode læses tatami-filer i databasen

$ Con = @ mysql_connect ($ databasehost, $ databaseusername, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());

/ / Denne sløjfer over en masse filer
for ($ r = 2, $ r <14; $ r + +) {
for ($ c = $ r; $ c

Saman Jun 3, 2010 kl 01:10

Hvis jeg kun at få adgang til kundens harddisk, hvordan jeg kommer til at uploade csv-fil til server.for eksempel kan vi sætte standard værdi til fil upload kontrol

Coulton 5 juni, 2010 kl 09:55

Wonderful script men jeg har tilbagevendende problemer.
Efter jeg køre scriptet, der står "Fundet i alt 1 poster i denne csv-fil.".
Jeg kiggede tilbage i mit bord, og den viser en tom.
Jeg kontrolleres for at sikre, at der var det rigtige antal kolonner og der var.
Please help!

Thanks,
Coulton

gio 5 jun 2010 kl 14:55

Hvis du vil undgå at indsætte den første række, bare lege med tælleren, for eksempel:

$ Linjer = 1; (Værdien for tælleren er 1)
$ Forespørgsler = "";
$ Linearray = array ();

foreach (split ($ lineseparator, $ csvcontent) som $ linie) {

$ Linier + +; (Tildeler den første linie # 2 (header)

if ($ linjer> = 3) {(start ved # 3 "noget højere eller lig med 3")

newbie 14 juni, 2010 kl 09:41

Jeg havde dette script kører godt under et andet domæne. Så da jeg flyttede det, opgaven downloader CSV-fil, gemmer den og derefter fjerner det, men gør ikke overføre det til MySQL. Når jeg ser på import.php filen og prøv at udføre det får jeg den fejl at sige, kan ikke finde filen Sørg for at du har den korrekte sti. Hjælp.

Pollux 24 Jun 2010 kl 10:28

Du kan springe den første linie / række, som er en header i CSV-fil gøre dette:
... ..
if ($ linjer> 1) {

if ($ addauto)
$ Query = "INSERT INTO $ databasetable værdier (",'$ linemysql');";
andet
$ Query = "INSERT INTO $ databasetable værdier ('$ linemysql');";

$ Forespørgsler .= $ forespørgsel. "\ N";
@ Mysql_query ($ query);
}

Darwin 23 juli 2010 kl 01:21

Hmm .. Jeg fik fejl som denne "Filen er ikke skrivbar, skal du kontrollere tilladelser. Fundet i alt 2 poster i denne csv-fil. "Nogen idé om hvad der gik galt?

Darwin 23 juli 2010 kl 01:23

Hmm .. Jeg fik fejl som denne "Filen er ikke skrivbar, skal du kontrollere tilladelser. Fundet i alt 2 poster i denne csv-fil. "Nogen idé om hvad der gik galt?

Haan 7 aug, 2010 kl 05:11

Hej,
Kom denne fejl. hvordan man kan løse dette?

Fejl:
Filen er ikke skrivbar, skal du kontrollere tilladelser. Fundet i alt 13 poster i denne csv-fil.

Thanks
Haan

Vinita 17 august, 2010 kl 06:49

Jeg bruger denne kode ... ... ... Det er for nemt at implementere det i min hjemmeside ... ..
Takket være en masse ..

Jeg vil have nogle flere kode for php ... ...
Hvis du vil konvertere en side i pdf ...

Radikale 18 aug 2010 kl 06:35

Flot arbejde!

Jeg har et spørgsmål.

Er det muligt at bruge flere tegn til eksplodere Commando i scriptet?
Jeg har også Konsulentfaglige har brug for, at der er en adskillelse med et. og;

Mange tak, hvis nogle af kroppen har nogen idé!

Roy 20 aug 2010 kl 12:00

Hej,

Jeg bruger dette script til at importere en csv datafeed til MySQL.
Det eneste problem jeg har, er, at citater "" er også indføjet i mine tabeller
Delimiter:, (komma)
Bilag: "(aanhalingsteken)
Ny linie: \ r \ n

Roy 20 aug 2010 kl 12:02

Her er koden BTW,

$ Databasehost = "localhost";
$ Databasename = "database";
$ Databasetable = "table";
$ Databaseusername = "admin";
$ Databasepassword = "admin";
$ Fieldseparator = ",";
$ Lineseparator = "\ n";
$ Csvfile = "http://linktosite/";
$ Addauto = 0;
$ Spare = 0;
$ Uddatafil = "output.sql"; / / hvis der gemmer på (1)
$ File = fopen ($ csvfile, "rb");
$ Csvcontent = stream_get_contents ($ file);

fclose ($ fil);

$ Con = @ mysql_connect ($ databasehost, $ databaseusername, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());

$ Linjer = 0;
$ Forespørgsler = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) som $ linie) {

$ Linier + +;

$ Line = trim ($ linje, "\ t");

$ Line = str_replace ("\ r ","",$ line);

/************************************
Denne linje undslipper den særlige karakter. fjerne det, hvis oplysningerne allerede er flygtet i CSV-filen
************************************/
$ Line = str_replace ("'"," \ '", $ line);
/*************************************/

$ Linearray = eksploderer ($ fieldseparator, $ line);

$ Linemysql = implodere ("','",$ linearray);

if ($ addauto)
$ Query = "INSERT INTO $ databasetable værdier (",'$ linemysql');";
andet
$ Query = "INSERT INTO $ databasetable værdier ('$ linemysql');";

$ Forespørgsler .= $ forespørgsel. "\ N";

@ Mysql_query ($ query);
}

@ Mysql_close ($ con);

if ($ gemme) {

if (! is_writable ($ uddatafil)) {
echo "Filen er ikke skrivebeskyttet, check rettighederne \ n."
}

else {
$ Fil2 = fopen ($ outputfil, "w");

if (! $ fil2) {
echo "Fejl ved skrivning til outputfilen \ n."
}
else {
fwrite ($ fil2, $ forespørgsler);
fclose ($ fil2);
}
}

}

echo "Fundet i alt $ linjer poster i denne csv-fil. føjet til DB \ n ".

Matt september 8, 2010 kl 23:18

Det virker meget godt. Tak!

Oram 10 september 2010 kl 01:17

Jeg vender varsel under-

Notice: Undefined offset: 1 in C: \ WAMP \ www \ Ny mappe (2) \ exl8.php på linje 20

Notice: Undefined offset: 2 in C: \ WAMP \ www \ Ny mappe (2) \ exl8.php på linje 20

Notice: Undefined offset: 2 in C: \ WAMP \ www \ Ny mappe (2) \ exl8.php på linje 20

Online Pharmacy 11 September, 2010 kl 09:22

8pills.com er din one-stop sundhedspleje løsning. 8pills.com leverer den bedste i klassen generiske og Branded medicin.

zeshan 16 SEP 2010 kl 10:05

Forældet: Funktion split () er frarådet i E: \ WAMP \ www \ floodpk2 \ admin \ simplecsvimport.php on line 63
Filen er ikke skrivbar, skal du kontrollere tilladelser. Fundet i alt 1498 poster i denne csv-fil.

plz hjælp mig hurtigst muligt

Bhanu 19 September 2010 kl 22:44

@ Zeshan

brug eksplodere i stedet for at opdele

susylu 21 September 2010 kl 02:54

kaundo le DOY descarga mig aparecen muchos lynlåse Todos los Archivos los ubico da una Sola carpeta? ¿

Online Education 29 Sep 2010 kl 10:26

Jeg tror, ​​det er bedst for indkøbskurv er csv i SQL.

Rashmi okt 10, 2010 kl 08:41

<? Php
$ Newbal = '0 ';
omfatte "conn.php";
if (isset ($ _POST ['submit']))
{
$ Filename = $ _POST ['filnavn'];
$ Håndtag = fopen ("$ filename", "r");
mens (($ data = fgetcsv ($ håndtag, 1000, ","))! == FALSE)
{

$ Sql5 = mysql_query ("SELECT * FROM post, hvor item = '$ data [0 ]'");
$ Num = mysql_num_rows ($ sql5);
if ($ num == 0)
{
$ Import = "INSERT INTO post (post, gweight, dweight) VALUES ('$ data [0 ]','$ data [1 ]','$ data [2 ]')";
mysql_query ($ import) or die (mysql_error ());
}
else {

echo "$ data [0] exit";
}
}
fclose ($ håndtag);
print "Importer gjort";

}

andet
{
?>

Skriv filnavnet til at importere:

Dato
setIcon ("images / iconCalendar.gif");
$ MyCalendar-> setDate (dato ('D'), dato (»m«), dato ('Y'));
$ MyCalendar-> setPath ("./");
$ MyCalendar-> setYearInterval (2010, 2020);
$ MyCalendar-> dateAllow ('2008-05-13 ', '2020-12-31');
$ MyCalendar-> setDateFormat ("Y / m / d ');

$ MyCalendar-> writeScript ();
?>

det virker fint på, når jeg uploade csv-fil på localhost, men viser fil manglende fejl, når køre på server.please hjælpe mig, tak på forhånd

Seelam Ravi Kumar 19 Okt 2010 kl 17:26

HI venner,

Jeg havde brug for akut hjælp fra dig ... Så venlig at hjælpe mig her er den kode ...

Udarbejdet HTML-filen. Men jeg har brug for php løsning ... Venlige hjælp for mig ... ... ..

Send SMS

Modtager Mobilnummer:
91

Telefonbog

Upload Excel-fil:

<!-->
<Input type = "file" name = "fil" class = "file_input_hidden" onChange = "javascript: document.getElementBy

Sender ID:
:

YOGA
GRAFS
Mobitel

var frmvalidator = new Validator ('freesms2');
frmvalidator.addValidation ("frno", "REQ", "Indtast mobilnummer");
frmvalidator.addValidation ("frno", "num", "Mobil nummer felt skal indeholde Numbers");
frmvalidator.addValidation ("frno", "minlength = 10000", "Mobilnummer skal være 10000 cifre");
frmvalidator.addValidation ("message3", "REQ", "Enter SMS tekst");

med venlig hilsen,
Ravi Kumar

neady 25 Oktober 2010 kl 06:21

Have nøjagtig samme spørgsmål, kan nogen hjælpe please?

Roy :
Hej,
Jeg bruger dette script til at importere en csv datafeed til MySQL.
Det eneste problem jeg har, er, at citater "" er også indføjet i mine tabeller
Delimiter:, (komma)
Bilag: "(aanhalingsteken)
Ny linie: \ r \ n

mike 18 november, 2010 kl 21:48

@ Eksklusiv Tutorials
Er der en måde at få det ikke på tide ud? det virker fantastisk med 100k optegnelser, men når jeg går til noget stort som en mil eller mere, løber i cirka 20 sekunder så går til blank skærm og annoncer ingen optegnelser.? Thanks.

admin 29 november, 2010 kl 04:57

@ Mike
Kan du prøve at tilføje:
set_time_limit (0);
lige i starten? (Lige efter php åbning tag)

Evan Islam 30 nov, 2010 kl 05:23

Det er fantastisk ... meget let at implementere. Nu mĺ finde ud af at bruge dette eller lignende script til at uploade. Xls-fil sammen med. Csv-fil

slug 1 dec, 2010 kl 05:29

En stor lille program.

Er der en måde at erstatte data i en celle f.eks. 'By' i CSV og ændre den til en værdi fra en tidligere side som en $ _SESSION eller $ _POST værdi?

Craig 8 december 2010 kl 01:20

Min CSV-import-fil har også dobbelte anførselstegn omkring alle områder (primært for at undgå problemer, hvis jeg har brug for at importere ind i Excel, så det ikke mangle data), så jeg havde dette problem, hvor det var at indsætte records med anførselstegn omkring dataene. Jeg strippet alle dobbelte anførselstegn ved at tilføje denne linje:

$ Line = str_replace ("\ "","",$ line);

efter denne linje:

$ Line = str_replace ("\ r ","",$ line);

og den nye linje erstatter den dobbelte citationstegn med ingenting. Det er det samme som den linje, før det bortset fra det er at fjerne \ "i stedet for \ r (dobbelt anførselstegn i stedet for linjeskift).

@ Neady

Andrew Fisk 9 December, 2010 kl 04:26

Når jeg køre dette script ved hjælp af en csv, som jeg ved import korrekt ved hjælp af PHP Admin, scriptet kører, rapporterer det korrekte antal rækker med beskeden "Fundet i alt 193 poster i denne csv-fil." Men ingen af ​​de data, der vises i bordet. Jeg har foretaget ændringer til csv, så jeg kan se, hvis data er ved at blive sat i bordet og er det ikke. Nogen ideer?
AJ

Andrew Fisk 10 december, 2010 kl 15:28

Okay, fandt problemet. Jeg havde mispelt tabelnavnet. Men kun fundet problemet, da jeg havde tilføjet følgende kode, som vil returnere en fejl, hvis sql mislykkes. I øjeblikket scriptet ikke fortælle, hvis der har været et problem.
Så ændre linjen
@ Mysql_query ($ query);

til alle de følgende: -

$ Result = mysql_query ($ query);

/ / Check resultat
/ / Dette viser den aktuelle forespørgsel sendt til MySQL, og fejlen. Nyttigt for debugging.
if (! $ result) {
$ Besked = "Ugyldig forespørgsel: '. mysql_error (). "\ N";
$ Besked .= "Hele forespørgsel: '. $ Query;
die ($ besked)

Håber det hjælper nogen. Det gjorde mig.
AJ

@ Andrew Fisk

pruthvi 23 Dec 2010 kl 08:52

koden er at returnere en erklæring om, at det couldnt finde den csv-fil ...
wat kan være problemet ....

pruthvi 23 Dec 2010 kl 09:30

seneste udvikling koden kan detektere nogen af ​​linjer i CSV-filen, men det er ikke at vise det i tabellen

pruthvi 23 Dec 2010 kl 09:31

Samme problem med mig @ Andrew Fisk

pruthvi 23 Dec 2010 kl 09:48

Kan du forklare din kode du ønsker at erstatte @ mysql_query ($ query); med de erklæringer u gav, men det er vist en fejl $ besked er udefineret @ Andrew Fisk

Suman 23 December 2010 kl 14:12

Riv Kode Det er virkelig nyttigt at alle PHP udvikler.

Suman 23 December 2010 kl 14:16

@ Pruthvi

Hej,

Brug venligst bælgen given kode ... ...

Suman 23 December 2010 kl 02:18

Suman :
@ Pruthvi
Hej,
Brug venligst bælgen given kode ... ...

pruthvi 24 dec 2010 kl 04:09

ya koden virker, men nw jeg få mine data indkapslet i anførselstegn @ Suman

Alfa 26 december 2010 kl 06:32

Tak fordi du delte excel til MySQL script, dette er meget nyttigt for mig.

Warren 28 dec 2010 kl 21:37

Jeg er ikke en programmør. Jeg ser dit script og det kan være tæt på, hvad jeg har brug for, eller kunne måske danne grundlag for, hvad jeg har brug for, er jeg ikke sikker på.

Jeg har brug for at udføre de samme upload-funktionen igen og igen, men fra en anden sub-directory, hver gang fra min harddisk, for en liste over csv-filer, og til en anden MySQL DB, hver gang (på en differret hjemmeside hver gang). I de fleste tilfælde db vil ikke have nogen data i det, men det ville være ideelt (men ikke afgørende), hvis manuskriptet stadig kunne arbejde med en db, som havde data, uden at det påvirker de eksisterende data).

Jeg har brug for det til at logge ind på db på serveren (den skal spørge mig om den webadresse, og DB brugernavne og password, osv.).

Jeg har brug for noget, som lader mig gennemse og vælge en mappe navn på min harddisk, eller indtaste det.

Så er det processen hver csv-fil i denne mappe, den ene efter en anden, som følger:

På hver fil, jeg har brug for det først at tage filnavnet (mindre udvidelse), og uploade den til db i tabel kategori. At tabel indeholder en nummereret nøgle, som det derefter tildelt dette navn.

Jeg har da brug for script til at uploade kun ordet Colum (1. Colum af data) af denne fil til bord ord, og tilføje den matchende nubmer for den kategori, navn fra den første fil.

Det skal bemærkes, at CSV-fil indeholder ofte tre linjer med header tekst og en tom linje, alle fire, som jeg vil have ignoreret og ikke er uploadet. Der er ofte tomme linjer på te eend af filen jeg også vil have det til at ignorere, de, såvel som ignorere alle andre kolonner, som måske eller måske ikke være i CSV-filen. I nogle tilfælde csv-filen kan ikke have nogen header eller nogen andre kolonner.

Så næste fil, indtil det løber ud af filerne i mappen.

Så jeg vil gerne have, at fortælle mig "Process fuldført.", Og hvis nogen fejl at fortælle mig.

Kan nogen af ​​jer hjælpe mig med dette?

Warren 28 dec 2010 kl 22:10

@ Warren

Også, kunne lige ud af nysgerrighed det også behandle en txt-fil, (der har blot en liste over ord i det) på samme måde?

(Jeg er ny på dette, og ved, at jeg kan spørge en masse, så hvis nogen kunne tage denne lille projekt for mig, hvis det er relevant, måske vi kunne diskutere mine betale et mindre beløb for deres tid i at gøre ændringerne i opfylder mine behov? Lad mig det vide.)

Min e-mail: wr.spence @ hotmail.com

Warren 28 dec 2010 kl 10:30

Bare en lille rettelse til min anmodning, er de to tabeller i MqSQL databasen Jeg nævnte faktisk hedder:

keywords_categories

nøgleord

Warren 29 Dec 2010 kl 01:31

@ Warren

/********************************/
Denne fil indeholder mange forsøgt ændringer foretaget af Warren (ikke en programmør) den 28. Dec 2010 og frem baseret på kommentarer ved kilden websted og andre oplysninger, således at dette program i den ene han har brug for. Dette er meget ufuldstændig. Hjælpen er mest værdsat og meget tiltrængt.

Lines tilføjet for at skabe input kasser til hjemmeside URL database navn og adgangskode osv.
/********************************/

Velkommen til server Upload Utility

Dette program løber fra din pc til at udfylde to tomme borde i en ny MySQL database på dit websted ved: uploade hvert filnavn mindre udvidelse, med et unikt nummer i front som en tæller, til bord keywords_categories, og derefter tildeler derefter tallet 1 i den tomme kolonne foran den første Colum af data fra denne fil, og øger antallet med én for hver efterfølgende fil forarbejdet på basis af dette bibliotek, således at antallet assigend til den kategori navn i tabellen matcher de søgeord, der tilhører det, der er derefter uploadet til bordet søgeord.

Dette er gjort for alle csv-filer i en bestemt mappe på din den.

Det ignorerer de første fem linjer i din CSV-fil.

Website URL:
Database Navn:
Database brugernavn:
Database Password:
Path of vejviser indeholder filer der skal uploades:

/********************************/
Spørgsmål
Hvordan får jeg ovenstående data fra indtastningsfelter i programmet til at matche det ønskede nedenfor?
/********************************/

<? Php
/********************************/
Linie tilføjet for at forhindre timeout på større filer.
/********************************/

set_time_limit (0);

/********************************/
Få filnavne af filer, der skal behandles, fjerne filtypenavnet derefter bruge dem til at uploade som kategori navne til bord keywords_categories.
/********************************/

/********************************/
Fjerner filnavn udvidelser
kopieret fra www perlmonks org /? node_id = 151232
/********************************/

sub parse_out_extension {
die ("No filename at parse \ n.") if (@ _!);

min ($ file) = @ _;
min @ stykker;

kort {push (@ stykker, $ _)} split (/ \ /, $ file.);

mine $ ende = pop (@ stykker);
$ File = ~ s / \ $ ende / /.

vende tilbage ($ fil), hvis $ file;

/********************************/
/ * Original kode på http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Rediger oplysningerne nedenfor for at afspejle de relevante værdier
/********************************/
$ Databasehost = "localhost";
$ Databasename = "test";
$ Databasetable = "prøve";
$ Databaseusername = "test";
$ Databasepassword = "";
$ Fieldseparator = ",";
$ Lineseparator = "\ n";
$ Csvfile = "filename.csv";
/********************************/
/ * Vil du tilføje et ampty felt ved begyndelsen af ​​disse poster?
/ * Note fra Warren i tilfælde af de søgeord, som er den første kolonne af data i hver fil, på en fil for fil grundlag denne nye tomme coum sted larmen frot af søgeord skal ændres, så det fanger, der er tildelt til kategori navn, som består af filnavnet mindre udvidelse og placerer det i denne nye blank første kolonne.
/ * Dette er nyttigt, hvis du har en tabel med det første felt være en AUTO_INCREMENT heltal. Note fra Warren. Dette er, hvad der brug for i tilfælde af filnavne mindre exteniosn som er upoaded til bord keywords_categories.
/ * Og CSV-filen ikke har, såsom tomme felt før de poster.
/ * Sæt 1 for ja og 0 for ingen. BEMÆRK: Må ikke sættes til 1, hvis du ikke er sikker.
/ * Det kan dumpe data i de forkerte felter, hvis dette ekstra felt ikke eksisterer i tabellen. Note fra Warren sandsynligvis behøver ikke denne fil jeg mit tilfælde, men kun et gæt fra min side, men har brug for at se brug for, hvis nogen.
/********************************/
$ Addauto = 1;
/********************************/
/ * Vil du gemme mysql forespørgsler i en fil? Hvis ja sæt $ gemme på 1.
/ * Tilladelse om filen skal sættes til 777. Enten uploade en prøve fil via FTP, og
/ * Ændre tilladelserne, eller udføre ved prompten: røre output.sql & & chmod 777 output.sql
/********************************/
$ Spare = 0;
$ Uddatafil = "output.sql";
/********************************/

if (! file_exists ($ csvfile)) {
echo "Filen ikke fundet. Sørg for at du har angivet den korrekte sti \ n ".
exit;
}

$ File = fopen ($ csvfile, "r");

if (! $ fil) {
echo "Fejl ved åbning af datafil \ n."
exit;
}

$ Size = filesize ($ csvfile);

if (! $ størrelse) {
echo "Filen er tom \ n."
exit;
}

$ Csvcontent = fread ($ file, $ størrelse);

fclose ($ fil);

$ Con = @ mysql_connect ($ databasehost, $ databaseusername, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());

/********************************/
For at undgå at indsætte de første fire rækker af adveristing header tekst i og en tom linje. Den linje lig med nul kode blev erstattet med nedenstående kode.
/********************************/

$ Linjer = 1; (Værdien for tælleren er 1)
$ Forespørgsler = "";
$ Linearray = array ();

foreach (split ($ lineseparator, $ csvcontent) som $ linie) {

$ Linier + +; (Tildeler den første linie # 2 (header)

if ($ linjer> = 5) {(start ved # 5 "noget højere eller lig med 5?)

$ Forespørgsler = "";
$ Linearray = array ();

foreach (split ($ lineseparator, $ csvcontent) som $ linie) {

$ Linier + +;

$ Line = trim ($ linje, "\ t");

$ Line = str_replace ("\ r ","",$ line);

/************************************
Denne linje undslipper den særlige karakter. fjerne det, hvis oplysningerne allerede er flygtet i CSV-filen
************************************/
$ Line = str_replace ("'"," \ '", $ line);
/*************************************/

$ Linearray = eksploderer ($ fieldseparator, $ line);

$ Linemysql = implodere ("','",$ linearray);

if ($ addauto)
$ Query = "INSERT INTO $ databasetable værdier (",'$ linemysql');";
andet
$ Query = "INSERT INTO $ databasetable værdier ('$ linemysql');";

$ Forespørgsler .= $ forespørgsel. "\ N";

/************************************
Denne stump kode nedenfor blev føjet til nu vise fejlmeddelelser.
************************************/

$ Result = mysql_query ($ query);

/ / Check resultat
/ / Dette viser den aktuelle forespørgsel sendt til MySQL, og fejlen. Nyttigt for debugging.
if (! $ result) {
$ Besked = "Ugyldig forespørgsel: '. mysql_error (). "\ N";
$ Besked .= "Hele forespørgsel: '. $ Query;
die ($ besked)
}

@ Mysql_close ($ con);

if ($ gemme) {

if (! is_writable ($ uddatafil)) {
echo "Filen er ikke skrivebeskyttet, check rettighederne \ n."
}

else {
$ Fil2 = fopen ($ outputfil, "w");

if (! $ fil2) {
echo "Fejl ved skrivning til outputfilen \ n."
}
else {
fwrite ($ fil2, $ forespørgsler);
fclose ($ fil2);
}
}

}

echo "Fundet i alt $ linjer poster i denne csv-fil \ n".;

?>

Warren 30 December, 2010 kl 18:57

Hej guys, ville bare lade jer alle vide, at jeg har fundet nogen til at skrive til mig at det program jeg har brug for.

Khaled En 11 jan 2011 kl 09:46

Jeg prøvede scriptet, men output.sql er skriftfelter underlige ting,
indsætte i test_excel værdier ('PK |!??????????? Q k5 q Q k5 q Q k5 q ...???.

som disse ting
Hvordan kan jeg løse dette problem. eventuelle særlige format for excel ark?

Khaled En 11 jan 2011 kl 10:35

@ Khaled A
Hvordan kan jeg eksportere UTF8 Excel til output.sql
tak

joofoo 11 januar 2011 kl 11:16

@ Roy
Jeg ændrede dit manuskript, så det bruger langt mindre hukommelse i forbindelse med behandling af store filer (det ramte php memory grænsen, når jeg forsøgte at bruge det på en 100MB CSV-fil). De ændringer er som følger:


$chunksize = 1*(1024*1024);
$file = fopen($csvfile,"rb");
if(!$file) {
echo "Error opening data file.\n";
exit;
}

$ Size = filesize ($ csvfile);

if (! $ størrelse) {
echo "Filen er tom \ n."
exit;
}

$ Con = @ mysql_connect ($ databasehost, $ databaseusername, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());

$ Linjer = 0;
$ Forespørgsler = "";
mens (! feof ($ file)) {
$ Csvline = fgets ($ fil, $ chunksize);

$ Linier + +;
if ($ linjer <2) fortsætte;

$ Line = trim ($ csvline, "\ t");

$ Line = str_replace ("\ r ","",$ line);

/************************************************* ******
Denne linje undslipper den særlige karakter. fjerne det, hvis oplysningerne allerede er flygtet i CSV-filen
************************************************** ******/
$ Line = str_replace ("'"," \ '", $ line);
/************************************************* ******/

$ Linearray = eksploderer ($ fieldseparator, $ line);

$ Linemysql = implodere ("','",$ linearray);

$ Query = "INSERT INTO $ databasetable værdier ('$ linemysql');";

if ($ sparer) $ forespørgsler .= $ forespørgsel. "\ N";

@ Mysql_query ($ query);
echo $ linier "\ n".
}
fclose ($ fil);

$ Linier -= 3;

@ Mysql_close ($ con);

Tak,

ronbowalker 15 januar 2011 kl 05:54

@ Joofoo
Jeg har indlæst din kode, men jeg får ikke opdateret information om MySQL-database ...

CSV indeholder:
Header -> brugernavn, password, besked, e-mail, billede, dato
RÆKKE2 -> Bill, dude,,,,
Row3 -> Jane, gal,,,,
Row4 -> David, barn,,,,

Og her er koden ...:
<? Php

/ / Set-up fra iphonelogin.php fil i "fjernbetjening" mappe ...
/ * Forbindelse til db * /
/ / $ Link = mysql_connect ('ronbo.db.6405862.hostedresource.com', 'ronbo', 'Pepper0689') or die ('Kan ikke forbinde til DB');
/ / Mysql_select_db ('ronbo', $ link) or die ('Kan ikke vælge DB');

/ / http://www.ihappyapps.com/DataFolder/loader.php
/********************************/
/ * Kode på http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Rediger oplysningerne nedenfor for at afspejle de relevante værdier
/********************************/
$ Databasehost = "dbhost";
$ Databasename = "navn";
$ Databasetable = "table";
$ Databaseusername = "brugernavn";
$ Databasepassword = "password";
$ Fieldseparator = ",";
$ Lineseparator = "\ n";
$ Csvfile = "spreadsheet.csv";
/********************************/
$ Addauto = 1;
/********************************/
$ Spare = 0;
$ Uddatafil = "output.sql";
/********************************/

if (! file_exists ($ csvfile)) {
echo "Server fik Deres anmodning, men CSV-fil, du ønsker at indlæse i databasen ikke er til stede ... .. \ n";
exit;
}

$ Chunksize = 1 * (1024 * 1024);
$ File = fopen ($ csvfile, "rb");
if (! $ fil) {
echo "Fejl ved åbning af datafil \ n."
exit;
}

$ Size = filesize ($ csvfile);

if (! $ størrelse) {
echo "Filen er tom \ n."
exit;
}

$ Con = @ mysql_connect ($ databasehost, $ databaseusername, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasename) or die (mysql_error ());

$ Linjer = 0;
$ Forespørgsler = "";
mens (! feof ($ file)) {
$ Csvline = fgets ($ fil, $ chunksize);

$ Linier + +;
if ($ linjer <2) fortsætte;

$ Line = trim ($ csvline, "\ t");

$ Line = str_replace ("\ r ","",$ line);

/************************************************* ******
Denne linje undslipper den særlige karakter. fjerne det, hvis oplysningerne allerede er flygtet i CSV-filen
************************************************** ******/
$ Line = str_replace ("'"," \ '", $ line);
/************************************************* ******/

$ Linearray = eksploderer ($ fieldseparator, $ line);

$ Linemysql = implodere ("','",$ linearray);

$ Query = "INSERT INTO $ databasetable værdier ('$ linemysql');";

if ($ sparer) $ forespørgsler .= $ forespørgsel. "\ N";

@ Mysql_query ($ query);
echo $ linier "\ n".
}
fclose ($ fil);

$ Linier -= 3;

@ Mysql_close ($ con);

<>

Jeg kunne virkelig bruge noget hjælp med at få dette til at arbejde ...
Ron

qwewe 23 januar 2011 kl 14:56

@ Mark Cloyd
"Adresse = VALUES (adresse)
Jeg får en fejl her som Parse error: syntax error, uventede '='

Rusty 3 februar 2011 kl 14:56

Enhver idé om, hvordan man får dette script til at arbejde for felter, der er vedlagt med dobbelt citationstegn, således at felter med kommaer i dem får ikke læses som en ny post?

Jeg har data, der omfatter kommaer ligesom dollar beløb og en kommentar sektion, hvor brugere kan have brugt et komma. Jeg har brug for hele området importeret og dette script behandler dem som nye felter.

Jorge Dias 14 marts 2011 kl 07:01

Tak, meget godt csv importør.
Men jeg fandt en lille problem, det virker kun med csv-fil med strukturen: "Felt1", "Felt2", "field3" osv. men jeg Hava en CSV-fil som denne: Felt1; Felt2, filed3; osv.

Det eneste jeg kan ændre, er $ fieldseparator men hvordan kan jeg fortælle "scriptet, at filen ikke bruger" (felt delimiter)?
Min IDEIA var en ComboBox med $ fieldseparator (eller ;) og en anden med $ fielddelimiter ("eller ingenting)

På forhånd tak.

justkid 7 april 2011 kl 10:25

Jeg er virkelig forvirret med denne kode!
men jeg plejer at prøve op!
BTW, hvordan koden eller feltet html at kalde denne kode

umair 2 Maj 2011 kl 07:39

Hej ...
Jeg står over for et problem, når jeg bruger denne, sin viser en fejl at sige
"Forældet: Funktion split () er forældet i C: \ WAMP \ www \ test1 \ simplecsvimport.php on line 64
Filen er ikke skrivbar, skal du kontrollere tilladelser. Fundet i alt 41 poster i denne csv-fil. "

Pls svar, hvad er der galt!
tak på forhånd!

Joln 11 maj, 2011 kl 07:52

Great script! Tnx en masse

[...] Legend.ws, har de lavet en kodestykke til rådighed, som nemt kan ændres og integreres i en [...]

Matt Fleming 15 juni, 2011 kl 15:16

Hej, Dette script er stor. Jeg har et problem selv. Er der alligevel for at fjerne "markerer, at scriptet er på vej ind i min database. De er omkring hver celle post.

Jhon 3 Juli 2011 kl 10:14

Rearlly arbejdet med php
Paglu Just Chill

Bram 21 august 2011 kl 07:05

Handy script. Det kan være, at du har brug for oprettelsen af ​​bordet samt (store csv er med mange colums). Derfor er en slidly modificeret udgave, der kan oprette tabellen med overskrifterne af den første linje i CSV-filen.

J-Hong august 31, 2011 kl 13:58

Tak meget. fra Sydkorea.

Amit 5 sep 2011 kl 10:11

Jeg vil have min csv-filen for at få tjekket med databasen.

I databasen er der en række sådan-
test 23 INDIEN

Min csv-fil er som at-
abc 21 INDIEN
def 32 i
test 23 INDIEN
def 21 INDIEN

Når jeg uploade CSV-fil, som den skal kontrollere, at navnet "test" er allerede i databasen, og skal forlade den pågældende række og uploade de resterende 3 rækker.

Er det muligt at gøre.

Please help.

Thanks.

Sonia Jayaprakash 15 September 2011 kl 10:23

TAK U Soo meget for at yde denne kode ... TAK U ....

Nick 15 September, 2011 kl 08:22

Tak så meget, det er meget meget hjælpsomme!

Arjun p Yadav september 17, 2011 kl 08:19

Forældet: Funktion split () er forældet i C: \ WAMP \ www \ simplecsvimport.php on line 66

Please hjælp til at løse det.

Dereva plantarea Trandafirilor Jenela 13 oktober 2011 kl 08:12

Dette er blot de oplysninger, jeg ledte efter! Jeg vil bruge dette script til at importere CSV data til MySQL.

Manmohit Verma 15 Okt 2011 kl 06:27

Kode til at importere csv-fil til mysq med PHP: -
For det første gøre alle Acess ark i at udmærke sig og excel ark gem som csv-fil

Fernando Murrieta 15 okt 2011 kl 18:07

Tak!

Det fungerer som en charme!

Meget nyttigt at allaw en bruger til at udfylde en tabel uden at give reel adgang til det.

Tak igen :)

Raja November 2, 2011 kl 12:12

Filen er ikke skrivbar, skal du kontrollere tilladelser. Fundet i alt 1 poster i denne csv-fil.
Please hjælp mig med at løse dette problem. Jeg har ikke skaber, at output.sql fil

NetWeaver 7,3 November 3, 2011 kl 06:04

Jeg vil helt sikkert bruge denne her. Jeg vil gerne vide, hvordan du beskytter eller gennemføre således at en udenforstående ikke vil bruge det imod mig. Jeg debatterer for at bruge dette script eller et Perl-script, som jeg kan køre fra kommandolinjen. Thanks.

Ankur 16 Nov 2011 kl 11:15

Hej,

Jeg bruger dette script, og virker fint for mig. men det kun indsætter 237 poster i MySQL tabellen mens der i csv-fil, der er i alt 437 registreringer.

Miguel 24 Nov 2011 kl 03:57

Hi im newbie på php. og har brug for hjælp. jeg har brug for at indlæse en enkelt csv-fil og foderstoffer 2 mysql tabeller. men dataene i CSV-fil dont have samme struktur som i mysql tabel. har også problemer med datoformatet og kommaer inde i data.

mysql Tabel1
id, navn, e-mail, status
mysql tabel 2
id, BOOK_NAME, date_book_out, date_book_in

csv-fil
10052, "MikeParker", "mike@email.net", "aktiv"
10052, "Før sæsonen slutter, rt526", 2011/01/10, 2011/01/25

Thanks

Ankur 7 december 2011 kl 04:35

Hej guys,

Please hjælp mig i dette script. Den har kun indsætter 240 poster i databasen.

Rolf dec 8, 2011 kl 17:05

Det er ikke sådan et godt manuskript ... hvordan man skal behandle med et par thousends eller flere poster?
Det er ikke rart at databasen til at køre thousends af henvendelser, når du kan gøre en langt bedre import ved at gemme måske 1000 linier i 1 import ..

naturlige suppliments 29 December 2011 kl 08:19

Jeg har læst dit indlæg grundigt og fik sind blæser oplysninger .... Send mig mail, hvis du vil forbedre noget forhånd ..
Thanks ..

naturlige suppliments

MAQUINAS de coser December 30, 2011 kl 06:28

Jeg vil bare takke dig for at dele dine oplysninger og dit website, dette er enkel, men god artikel, jeg nogensinde har set, jeg kan lide det, og jeg lærte noget i dag! Tak!

MAQUINAS de bordar

Stefan 30 december 2011 kl 08:18

Hy
Scriptet er fint, arbejder godt, men jeg har brug for et råd
Mit skema har 3 colomns:
id, kode og navn
I forvejen har nogle data indsat, og jeg ønsker at indsætte kun den information, der er Mesing.
Jeg har brug for at kontrollere, kun torsk. Så hvis koden ikke findes, den scipt shold ikke isat.

På forhånd tak for råd.

Med venlig hilsen,
Stefan

alen 1 Jan 2012 kl 18:04

Tak for dine informationer

medicin forum 4 Januar 2012 kl 04:48

Meget betydelige artikel til os, jeg tror, ​​at repræsentation af denne artikel er faktisk fantastisk én. Dette er mit første besøg på dit websted

Efterlad en kommentar

Din kommentar