PHP-script om gegevens te importeren in csv mysql
Dit is een simpel script dat u zal toestaan om csv gegevens te importeren in uw database. Dit komt handig, want je kunt gewoon de juiste velden te bewerken, te uploaden samen met het CSV-bestand en noem het vanaf het web en het zal de rest doen.
Hiermee kunt u opgeven het scheidingsteken in dit csv-bestand, of het nu een coma, een tabblad, enz. Ook kunt u het kiezen van de scheidingslijn, kunt u de output op te slaan in een bestand (bekend als een data-sql dump).
Het maakt u ook een leeg veld onder aan het begin van elke rij, die meestal is een auto increment integer primaire sleutel.
Dit script is vooral nuttig als je niet hebt phpmyadmin, of als u niet wilt dat de moeite van het inloggen en liever een paar klikken oplossing, of ben je gewoon een command prompt vent.
Maar zorg ervoor dat de tafel is al gemaakt voordat je probeert om de gegevens te dumpen.
Gelieve uw commentaar bericht als u nog geen bug report.
Geweldig script! Tnx veel
Ik heb geen woord om dit bericht ... .. ben ik echt onder de indruk van dit bericht ... waarderen. De persoon die te maken dit bericht was het een groot menselijk .. bedankt voor deelde deze met
ons.
Ja ... thats echt een informatieve post. Ik ben nieuw blogger zou zeker nuttige informatie voor mij. Bedankt voor het delen!
Script werkt prima voor mij vrij veel zoals het is. Veel dank!
Hi ...
Ik ben een probleem, toen ik deze te gebruiken, het is een fout te zeggen met
"Verouderd: Functie split () is deprecated in C: \ wamp \ www \ test1 \ simplecsvimport.php on line 64
Bestand is niet beschrijfbaar, controleer permissies. Gevonden een totaal van 41 records in deze csv-bestand. "
Pls antwoord, wat is er mis!
dank bij voorbaat!
Ik ben echt in de war met deze code!
maar ik zal proberen in!
BTW, hoe de code of het veld html om deze code te bellen
Bedankt, zeer goede csv importeur.
Maar ik een klein probleem gevonden, het werkt alleen met csv-bestand met de structuur: "veld1", "veld2", "field3", etc. maar ik een CSV-bestand als dit Hava: veld1; veld2; filed3; etc
Het enige wat ik kan veranderen is $ fieldseparator maar hoe kan ik 'vertellen' het script dat het bestand niet te gebruiken "(veldscheidingsteken)?
Mijn ideia was een combobox met $ fieldseparator (of en nog een met $ fielddelimiter ("of niets)
Dank bij voorbaat.
Enig idee van hoe dit script te werken voor velden die zijn ingesloten dus met dubbele aanhalingstekens dat velden met komma's in hen niet om te lezen als een nieuw item te krijgen?
Ik heb gegevens die komma's, zoals dollar bedragen en een commentaar sectie waar gebruikers kunnen gebruik hebben gemaakt van een komma bevat. Ik heb de ingevoerde hele veld en dit script behandelt hen als nieuwe velden.
Mark Cloyd @
"Adres = VALUES (adres)
Ik krijg een foutmelding hier als Parse error: syntax error, onverwachte '='
@ Joofoo
Ik heb geladen uw code maar ik krijg geen bijgewerkte informatie over MySQL database ...
CSV bevat:
Header -> gebruikersnaam, wachtwoord, bericht, e-mail, beeld, datum
Rij2 -> Bill, dude,,,,
Row3 -> Jane, gal,,,,
Row4 -> David, kind,,,,
En hier is de code ...:
<? Php
/ / Set-up van iphonelogin.php bestand in het "op afstand" map ...
/ * Verbinding te maken met de db * /
/ / $ Link = mysql_connect ('ronbo.db.6405862.hostedresource.com', 'ronbo', 'Pepper0689 ") or die (' Kan geen verbinding maken met de DB ');
/ / Mysql_select_db ('ronbo', $ link) or die ('Kan niet selecteren van de DB');
/ / https://www.ihappyapps.com/DataFolder/loader.php
/********************************/
/ * Code bij https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Bewerk de items hieronder om de juiste waarden weerspiegelen
/********************************/
$ Databasehost = "dbhost";
$ Databasenaam = "naam";
$ Databasetable = "tabel";
$ Eigen database = "username";
$ Databasepassword = "wachtwoord";
$ Fieldseparator = "";
$ Lineseparator = "\ n";
$ Csvfile = "spreadsheet.csv";
/********************************/
$ Addauto = 1;
/********************************/
$ Save = 0;
$ Uitvoerbestand = "output.sql";
/********************************/
if (! file_exists ($ csvfile)) {
echo "Server heb je verzoek, maar het CSV-bestand dat u wilt laden in de database is niet aanwezig ... .. \ n";
uitgang;
}
$ Chunksize = 1 * (1024 * 1024);
$ File = fopen ($ csvfile, "rb");
if (! $ file) {
echo "Fout bij openen bestand \ n.";
uitgang;
}
$ Size = filesize ($ csvfile);
if (! $ size) {
echo "Bestand leeg is \ n.";
uitgang;
}
$ Con = @ mysql_connect ($ databasehost, $ database invoeren, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasenaam) or die (mysql_error ());
$ Lijnen = 0;
$ Query = "";
while (! feof ($ file)) {
$ Csvline = fgets ($ file, $ chunksize);
$ Lijnen + +;
if ($ lijnen <2) voort te zetten;
$ Lijn = trim ($ csvline, "\ t");
$ Lijn = str_replace ("\ r ","",$ lijn);
/************************************************* ************************************************** *********
Deze lijn ontsnapt aan het bijzondere karakter. te verwijderen wanneer er items zijn al ontsnapte in het CSV-bestand
************************************************** ************************************************** ********/
$ Lijn = str_replace ("'"," \ ", $ regel);
/************************************************* ************************************************** ********/
$ Linearray = explode ($ fieldseparator, $ regel);
$ Linemysql = imploderen ("','",$ linearray);
$ Query = "INSERT INTO $ databasetable waarden ('$ linemysql');";
if ($ te besparen) $ query .= $ query. "\ N";
@ Mysql_query ($ query);
echo $ lijnen "\ n".;
}
fclose ($ file);
$ Lijnen -= 3;
@ Mysql_close ($ con);
<>
Ik kon echt wel wat hulp gebruiken bij het verkrijgen van dit te laten werken ...
Ron
@ Roy
Ik gemodificeerde je script, zodat het veel minder geheugen verbruikt bij het verwerken van grote bestanden (het raakte PHP Memory Limit toen ik probeerde om het te gebruiken op een 100mb CSV-bestand). De wijzigingen zijn als volgt:
$chunksize = 1*(1024*1024);
$file = fopen($csvfile,"rb");
if(!$file) {
echo "Error opening data file.\n";
exit;
}
$ Size = filesize ($ csvfile);
if (! $ size) {
echo "Bestand leeg is \ n.";
uitgang;
}
$ Con = @ mysql_connect ($ databasehost, $ database invoeren, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasenaam) or die (mysql_error ());
$ Lijnen = 0;
$ Query = "";
while (! feof ($ file)) {
$ Csvline = fgets ($ file, $ chunksize);
$ Lijnen + +;
if ($ lijnen <2) voort te zetten;
$ Lijn = trim ($ csvline, "\ t");
$ Lijn = str_replace ("\ r ","",$ lijn);
/************************************************* ************************************************** *********
Deze lijn ontsnapt aan het bijzondere karakter. te verwijderen wanneer er items zijn al ontsnapte in het CSV-bestand
************************************************** ************************************************** ********/
$ Lijn = str_replace ("'"," \ ", $ regel);
/************************************************* ************************************************** ********/
$ Linearray = explode ($ fieldseparator, $ regel);
$ Linemysql = imploderen ("','",$ linearray);
$ Query = "INSERT INTO $ databasetable waarden ('$ linemysql');";
if ($ te besparen) $ query .= $ query. "\ N";
@ Mysql_query ($ query);
echo $ lijnen "\ n".;
}
fclose ($ file);
$ Lijnen -= 3;
@ Mysql_close ($ con);
Dank u wel,
@ Khaled Een
Hoe kan ik exporteren UTF8 Excel output.sql
dankzij
Ik heb geprobeerd het script, maar het is output.sql schrijftafeltje rare dingen,
invoegen in test_excel waarden ('PK |!??????? Q k5 q Q k5 q Q K5 q ....
als deze dingen
Hoe kan ik dit probleem oplossen. eventuele speciale formaat voor de excel sheet?
Hi guys, wilde alleen maar om u te laten weten allemaal dat ik iemand heb die mij schrijven het eigenlijke programma ik nodig heb gevonden.
@ Warren
/********************************/
Dit bestand bevat veel geprobeerd wijzigingen door Warren (geen programmeur) op 28 dec vanaf 2010 gebaseerd op het commentaar bij de bron site en andere info zodat dit programma te maken in degene die hij nodig heeft. Dit is zeer onvolledig. Hulp is meest gewaardeerde en heel erg nodig.
Lijnen toegevoegd aan invoervelden voor de website URL database naam en wachtwoord, etc. te creëren
/********************************/
Welkom op de server uploaden Utility
Dit programma loopt van uw pc naar twee lege tafels vullen in een nieuwe MySQL database op uw website door: het uploaden van elke bestandsnaam verminderd met de uitbreiding, met een uniek nummer voor als tegen te gaan, aan tafel keywords_categories, en dan vervolgens kent de nummer 1 in de lege kolom in de voorkant van de eerste kolom van de gegevens uit dat bestand, en verhoogt het nummer een voor iedere volgende verwerkt bestand uit die map, zodat het aantal assigend naar de categorie naam in de tabel overeenkomt met de trefwoorden die erbij hoort die vervolgens geüpload naar tabel trefwoord.
Dit wordt gedaan voor alle csv-bestanden in een opgegeven map op uw het.
Het negeert de eerste vijf regels in uw CSV-bestand.
URL van de website:
Database naam:
Database User Name:
Database Password:
Pad van de gids met bestanden te uploaden:
/********************************/
Vraag
Hoe krijg ik bovenstaande gegevens van de invoervelden in het programma aan te passen die hieronder aangevraagd?
/********************************/
<? Php
/********************************/
Lijn toegevoegd aan time-out te voorkomen op grotere bestanden.
/********************************/
set_time_limit (0);
/********************************/
Get file namen van bestanden die moeten worden verwerkt, en verwijder vervolgens bestandsnaamextensie ze te uploaden als categorie namen aan tafel keywords_categories gebruiken.
/********************************/
/********************************/
Verwijdert bestandsnaam extenties
gekopieerd van www perlmonks org /? node_id = 151232
/********************************/
sub parse_out_extension {
die ("Geen bestandsnaam te ontleden \ n.") if (@ _!);
mijn ($ file) = @ _;
my @ stukken;
{kaart push (@ stukjes, $ _)} split (/ \ /, $ file.);
my $ einde = pop (@ stuks);
$ File = ~ s / \ $ end / /.;
return ($ file) indien $ file;
/********************************/
/ * Originele code op https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Bewerk de items hieronder om de juiste waarden weerspiegelen
/********************************/
$ Databasehost = "localhost";
$ Databasenaam = "test";
$ Databasetable = "monster";
$ Eigen database = "test";
$ Databasepassword = "";
$ Fieldseparator = "";
$ Lineseparator = "\ n";
$ Csvfile = "bestandsnaam.csv";
/********************************/
/ * Wilt u een ampty veld toe te voegen aan het begin van deze records?
/ * Nota van Warren in het geval van de zoekwoorden die de eerste kolom van de gegevens in elk bestand, op een bestand voor bestand basis van deze nieuwe, lege coum plaats din Frot van de zoekwoorden moet worden veranderd, zodat het vangt het nummer toegewezen aan de Categorie naam die is samengesteld uit de bestandsnaam minder de uitbreiding en de plaatsen in deze nieuwe lege eerste kolom.
/ * Dit is handig als u een tabel met het eerste veld zijnde een auto_increment integer. Nota van Warren. Dit is wat er nodig in het geval van de bestandsnamen minder exteniosn die upoaded aan tafel keywords_categories.
/ * En het CSV-bestand niet hebben, zoals een leeg veld voor de records.
/ * Set 1 voor ja en 0 voor nee. LET OP: niet ingesteld op 1 als u niet zeker bent.
/ * Dit kan dumpen gegevens in de verkeerde velden, indien deze extra veld niet bestaat in de tabel. Opmerking door Warren waarschijnlijk niet nodig dit bestand heb ik mijn zaak, maar slechts een gissing van mijn kant, maar hoeft aan de behoefte te zien indien van toepassing.
/********************************/
$ Addauto = 1;
/********************************/
/ * Wil je de mysql query's opslaan in een bestand? Zo ja set $ op te slaan 1.
/ * Toestemming op het bestand moet worden ingesteld op 777. Ofwel uploaden van een steekproef bestand via ftp en
/ * Het wijzigen van machtigingen, of uit te voeren op de prompt: touch output.sql & & chmod 777 output.sql
/********************************/
$ Save = 0;
$ Uitvoerbestand = "output.sql";
/********************************/
if (! file_exists ($ csvfile)) {
echo "Bestand niet gevonden. Zorg ervoor dat u hebt opgegeven het juiste pad \ n. "
uitgang;
}
$ File = fopen ($ csvfile, "r");
if (! $ file) {
echo "Fout bij openen bestand \ n.";
uitgang;
}
$ Size = filesize ($ csvfile);
if (! $ size) {
echo "Bestand leeg is \ n.";
uitgang;
}
$ Csvcontent = fread ($ file, $ size);
fclose ($ file);
$ Con = @ mysql_connect ($ databasehost, $ database invoeren, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasenaam) or die (mysql_error ());
/********************************/
Om te voorkomen dat het plaatsen van de eerste vier rijen van adveristing koptekst in en een lege regel. De lijn gelijk aan nul-code werd vervangen door onderstaande code.
/********************************/
$ Lines = 1; (De waarde voor de teller 1)
$ Query = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) als $ line) {
$ Lijnen + +; (Wijst de eerste regel # 2 (header)
if ($ lijnen> = 5) {(Start op # 5 "iets hoger of gelijk aan 5?)
$ Query = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) als $ line) {
$ Lijnen + +;
$ Lijn = trim ($ line, "\ t");
$ Lijn = str_replace ("\ r ","",$ lijn);
/************************************
Deze lijn ontsnapt aan het bijzondere karakter. te verwijderen wanneer er items zijn al ontsnapte in het CSV-bestand
************************************/
$ Lijn = str_replace ("'"," \ ", $ regel);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ regel);
$ Linemysql = imploderen ("','",$ linearray);
if ($ addauto)
$ Query = "INSERT INTO $ databasetable waarden (",'$ linemysql');";
anders
$ Query = "INSERT INTO $ databasetable waarden ('$ linemysql');";
$ Query .= $ query. "\ N";
/************************************
Dit stukje code hieronder is toegevoegd aan tonen nu foutmeldingen.
************************************/
$ Resultaat = mysql_query ($ query);
/ / Check resultaat
/ / Dit toont de werkelijke vraag naar MySQL, en de fout. Handig voor debugging.
if (! $ result) {
$ Message = 'Ongeldige zoekopdracht:'. mysql_error (). "\ N";
$ Message .= 'Whole query:'. $ Query;
sterven ($ bericht)
}
@ Mysql_close ($ con);
if ($ slaan) {
if (! is_writable ($ uitvoerbestand)) {
echo "Bestand is niet beschrijfbaar, controleer permissies. \ n";
}
else {
$ Bestand2 = fopen ($ uitvoerbestand, "w");
if (! $ bestand2) {
echo "Fout bij schrijven naar het uitvoerbestand \ n.";
}
else {
fwrite ($ file2, $ query);
fclose ($ bestand2);
}
}
}
echo "Gevonden een totaal van $ lijnen records in dit csv-bestand \ n.";
?>
Slechts een lichte correctie op mijn verzoek, de twee tabellen in de database MqSQL die ik noemde zijn eigenlijk heet:
keywords_categories
trefwoorden
@ Warren
Ook kon gewoon uit nieuwsgierigheid maar ook proces een txt-bestand (dat is gewoon een lijst met woorden erin) op dezelfde manier?
(Ik ben nieuw op dit, en weet dat ik kan een heleboel te vragen, dus als iemand zou dit kleine project nemen voor mij, als het passend is, kunnen we misschien over mijn betaling van een klein bedrag voor hun tijd in het maken van de wijzigingen in aan mijn wensen? Laat het me weten.)
Mijn e-mail is: wr.spence @ hotmail.com
Ik ben geen programmeur. Ik zie je script en het kan dicht bij wat ik nodig heb, of kan misschien wel de basis vormen van wat ik nodig heb, ik ben niet zeker.
Ik moet vervullen dezelfde functie upload over en weer, maar vanuit een verschillende sub-directory elke keer van mijn harde schijf, voor een lijst van CSV-bestanden, en naar een andere MySQL DB telkens (op een differret website elke keer). In de meeste gevallen de db heeft geen gegevens in, maar het zou ideaal zijn (maar niet noodzakelijk) als het script nog kon werken met een db die wel gegevens hebben, zonder dat de bestaande gegevens).
Ik heb het nodig om in te loggen op de db op de server (het moet mij vragen voor de site URL en db gebruikersnamen en wachtwoord, etc).
Ik heb iets nodig waarmee ik bladeren en kies een directory naam op mijn harde schijf, of voer het in.
Dan is het proces van elke CSV-bestand in die directory, de een na de andere, als volgt:
Op elk bestand Ik heb het nodig om eerst de bestandsnaam (verminderd met de extensie) te nemen en deze uploaden naar de db in tabel categorie. Deze tabel bevat een genummerde sleutel die dan toegewezen aan die naam.
Ik moet dan het script alleen het woord kolom (1e kolom van de gegevens) van dat bestand aan tafel woorden uploaden, en de bijpassende nubmer voor de categorie naam toe te voegen bij het eerste bestand.
Opgemerkt moet worden dat het CSV-bestand vaak drie lijnen van de koptekst en een lege regel bevat, die alle vier wil ik genegeerd en niet geupload. Er zijn vaak lege regels op te eend van het bestand wil ik ook het te negeren, die, evenals negeert alle andere kolommen die wel of niet in het CSV-bestand. In sommige gevallen de CSV-bestand mag geen kop-of een andere kolommen.
Dan het volgende bestand, totdat het loopt uit de bestanden in de directory.
Dan zou ik als het me te vertellen dat "proces te voltooien.", En eventuele fouten aan mij te vertellen.
Kan een van jullie me helpen met dit?
Bedankt voor het delen Excel script mysql, dit is zeer nuttig voor mij.
ya de code werkt, maar nw ik krijg mijn gegevens ingesloten tussen aanhalingstekens @ Suman
@ Pruthvi
Hi,
Gebruik dan de balg gegeven code ... ...
Rasp Code Het is echt handig om alle PHP ontwikkelaar.
Kunt u uitleggen uw code die u wilt) te vervangen door @ mysql_query ($ query, met de verklaringen u gaf, maar het toont een fout $ bericht is ongedefinieerd @ Andrew Vis
hetzelfde probleem met mij @ Andrew Vis
nieuwste ontwikkeling van de code kan detecteren geen van de lijnen in het CSV-bestand, maar zijn niet weer te geven in de tabel
de code is het terugsturen van een verklaring dat het couldnt vinden het CSV-bestand ...
Wat kan het probleem zijn ....
Oke, vond het probleem. Ik had mispelt de tabelnaam. Maar alleen vond de kwestie toen ik de volgende code die een fout zal terugkeren als de sql niet toegevoegd. Momenteel het script niet te vertellen als er een probleem geweest.
Dus verander de regel
@ Mysql_query ($ query);
aan alle van de volgende: -
$ Resultaat = mysql_query ($ query);
/ / Check resultaat
/ / Dit toont de werkelijke vraag naar MySQL, en de fout. Handig voor debugging.
if (! $ result) {
$ Message = 'Ongeldige zoekopdracht:'. mysql_error (). "\ N";
$ Message .= 'Whole query:'. $ Query;
sterven ($ bericht)
Hoop dat iemand helpt. Het deed me.
AJ
@ Andrew Vis
Toen ik dit script gebruik van een CSV waarvan ik weet dat de invoer correct gebruik van PHP Admin draaien, het script wordt uitgevoerd, meldt het juiste aantal rijen met de boodschap "Found een totaal van 193 records in dit csv-bestand." Maar geen van de gegevens worden weergegeven in de tafel. Ik heb wijzigingen aangebracht in de CSV, zodat ik kan zien of de data wordt gebracht in de tafel en is het niet. Enig idee?
AJ
Mijn CSV-bestand importeren heeft ook dubbele aanhalingstekens rond elk gebied (voornamelijk om problemen te voorkomen als ik moet importeren in Excel zodat het niet de gegevens mangel), dus ik had dit probleem waar het was de records invoegen met aanhalingstekens rond de gegevens. Ik heb alle dubbele aanhalingstekens ontdaan door de toevoeging van deze regel:
$ Lijn = str_replace ("\ "","",$ lijn);
na deze regel:
$ Lijn = str_replace ("\ r ","",$ lijn);
en de nieuwe lijn vervangt de dubbele aanhalingstekens met niets. Het is hetzelfde als de regel voor, behalve het verwijderen \ "in plaats van \ r (dubbele aanhalingstekens in plaats van regelteruglopen).
@ Neady
Een groot klein programma.
Is er een manier om gegevens te vervangen in een cel bijvoorbeeld. 'Stad' in de CSV en verander het naar een waarde uit een vorige pagina, zoals een $ _SESSION of $ _POST waarde?
Dit is geweldig ... zeer eenvoudig te implementeren. Nu moet uitzoeken hoe dit of een soortgelijk script te gebruiken om te uploaden. Xls-bestand met samen. Csv-bestand
@ Mike
Kunt u proberen toe te voegen:
set_time_limit (0);
meteen aan het begin? (Direct na de opening van php-tag)
@ Exclusieve Tutorials
Is er een manier om het niet time-out? Het werkt uitstekend met 100k records, maar als ik ga voor iets groots als een miljoen of meer, loopt gedurende ongeveer 20 seconden gaat vervolgens naar een lege scherm en advertenties geen records.? Bedankt.
Na exact hetzelfde probleem, kan iemand helpen aub?
Hallo vrienden,
Ik had dringend hulp van jou ... zo vriendelijk hier mij helpen is de code ...
Bereid het HTML-bestand. Maar ik moet php oplossing ... Vriendelijk helpen voor mij ... ... ..
SMS versturen
Ontvanger Mobiel Nummer:
+91
Telefoonboek
Upload Excel-bestand:
<!-->
<Input type = "file" naam = "file" class = "file_input_hidden" onchange = "javascript: document.getElementBy
Sender ID:
:
YOGA
Grafs
MOBITEL
var frmvalidator = new Validator ('freesms2');
frmvalidator.addValidation ("frno", "req", "Enter mobiele nummer");
frmvalidator.addValidation ("frno", "Num", "Mobiel nummer veld moet bevatten Numbers");
frmvalidator.addValidation ("frno", "MinLengte = 10000", "Mobiel nummer moet worden 10000 cijfers");
frmvalidator.addValidation ("message3", "req", "Enter SMS");
Met vriendelijke groet,
Ravi Kumar
<? Php
$ Newbal = '0 ';
omvatten "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 waar item = '$ data [0 ]'");
$ Num = mysql_num_rows ($ sql5);
if ($ num == 0)
{
$ Invoer = "$ data INSERT INTO item (item, gweight, dweight) waarden ('[0 ]','$ gegevens [1 ]','$ gegevens [2 ]')";
mysql_query ($ invoer) or die (mysql_error ());
}
else {
echo "$ data [0] te verlaten";
}
}
fclose ($ handle);
print "Import gedaan";
}
anders
{
?>
Type bestandsnaam te importeren:
Datum
setIcon ("images / iconCalendar.gif");
$ MyCalendar-> setDate (datum ('d'), datum ("m"), datum ('Y'));
$ MyCalendar-> setPath ("./");
$ MyCalendar-> setYearInterval (2010, 2020);
$ MyCalendar-> dateAllow ('2008-05-13 ', "2020-12-31');
$ MyCalendar-> setDateFormat ('Y / M / D');
$ MyCalendar-> writeScript ();
?>
het werkt prima als ik csv-bestand te uploaden op localhost, maar vertonen bestand ontbreekt fout bij het rijden op server.please mij helpen, dank bij voorbaat
Ik denk dat dit het beste is voor csv winkelwagentje's in SQL.
kaundo le doy descarga me aparecen muchos ritsen todos los Archivos los Ubico en una sola carpeta? ¿
@ Zeshan
gebruik ontploffen in plaats van split
Afgekeurd: Functie split () is deprecated in E: \ wamp \ www \ floodpk2 \ admin \ simplecsvimport.php op lijn 63
Bestand is niet beschrijfbaar, controleer permissies. Gevonden een totaal van 1498 records in dit csv-bestand.
plz help me dringend
8pills.com is uw one-stop gezondheidszorg oplossing. 8pills.com bieden de beste van de klas Generieke en Branded medicijnen.
Ik ben geconfronteerd met mededeling hieronder-
Notice: Undefined offset: 1 in C: \ wamp \ www \ Nieuwe map (2) \ exl8.php on line 20
Notice: Undefined offset: 2 in C: \ wamp \ www \ Nieuwe map (2) \ exl8.php on line 20
Notice: Undefined offset: 2 in C: \ wamp \ www \ Nieuwe map (2) \ exl8.php on line 20
Dit werkt erg goed. Dank je wel!
Hier is de code btw,
$ Databasehost = "localhost";
$ Databasenaam = "database";
$ Databasetable = "tabel";
$ Eigen database = "admin";
$ Databasepassword = "admin";
$ Fieldseparator = "";
$ Lineseparator = "\ n";
$ Csvfile = "https://linktosite/";
$ Addauto = 0;
$ Save = 0;
$ Uitvoerbestand = "output.sql"; / / op te slaan als op (1)
$ File = fopen ($ csvfile, "rb");
$ Csvcontent = stream_get_contents ($ file);
fclose ($ file);
$ Con = @ mysql_connect ($ databasehost, $ database invoeren, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasenaam) or die (mysql_error ());
$ Lijnen = 0;
$ Query = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) als $ line) {
$ Lijnen + +;
$ Lijn = trim ($ line, "\ t");
$ Lijn = str_replace ("\ r ","",$ lijn);
/************************************
Deze lijn ontsnapt aan het bijzondere karakter. te verwijderen wanneer er items zijn al ontsnapte in het CSV-bestand
************************************/
$ Lijn = str_replace ("'"," \ ", $ regel);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ regel);
$ Linemysql = imploderen ("','",$ linearray);
if ($ addauto)
$ Query = "INSERT INTO $ databasetable waarden (",'$ linemysql');";
anders
$ Query = "INSERT INTO $ databasetable waarden ('$ linemysql');";
$ Query .= $ query. "\ N";
@ Mysql_query ($ query);
}
@ Mysql_close ($ con);
if ($ slaan) {
if (! is_writable ($ uitvoerbestand)) {
echo "Bestand is niet beschrijfbaar, controleer permissies. \ n";
}
else {
$ Bestand2 = fopen ($ uitvoerbestand, "w");
if (! $ bestand2) {
echo "Fout bij schrijven naar het uitvoerbestand \ n.";
}
else {
fwrite ($ file2, $ query);
fclose ($ bestand2);
}
}
}
echo "Gevonden een totaal van $ lijnen records in dit csv-bestand. toegevoegd aan DB \ n. "
Hi,
Ik gebruik dit script naar een CSV-datafeed om MySQL importeren.
Het enige probleem dat ik heb, is dat de aanhalingstekens "" ook worden ingevoegd in mijn tabellen
Scheidingsteken:, (komma)
Behuizing: "(aanhalingsteken)
Nieuwe regel: \ r \ n
Nice work!
Ik dacht dat ik wel een vraag.
Is het mogelijk om meer tekens te gebruiken om het commando ontploffen in het script?
Ik allso nodig dat er een scheiding met een. en;
Heel erg bedankt als sommige lichaam enig idee heeft!
Ik gebruik deze code ... ... ... Het is te makkelijk om dit te implementeren op mijn site ... ..
Thanks a lot ..
Ik wil er meer code voor php ... ...
Het omzetten van de pagina in PDF ...
Hi,
Deze foutmelding krijgt. hoe dit op te lossen?
Fout:
Bestand is niet beschrijfbaar, controleer permissies. Gevonden een totaal van 13 records in dit csv-bestand.
Bedankt
Haan
Hmm .. Ik heb fouten als deze "Bestand is niet beschrijfbaar, controleer permissies. Gevonden een totaal van 2 records in dit csv-bestand. "Enig idee wat er mis ging?
Hmm .. Ik heb fouten als deze "Bestand is niet beschrijfbaar, controleer permissies. Gevonden een totaal van 2 records in dit csv-bestand. "Enig idee wat er mis ging?
Over te slaan op de eerste regel / rij dat is een kop in csv-bestand doe je dit:
... ..
if ($ lijnen> 1) {
if ($ addauto)
$ Query = "INSERT INTO $ databasetable waarden (",'$ linemysql');";
anders
$ Query = "INSERT INTO $ databasetable waarden ('$ linemysql');";
$ Query .= $ query. "\ N";
@ Mysql_query ($ query);
}
Ik had dit script draait goed onder een ander domein. Dan wanneer ik het verplaatst wordt, de cronjob downloads het CSV-bestand, slaat ze op, en vervolgens verwijdert, maar doesnt uploaden naar mysql. Als ik kijk naar de import.php bestand en probeer het uit te voeren krijg ik de foutmelding dat kan bestand niet vinden controleer dan of u het juiste pad. Helpen.
Als u wilt voorkomen dat het plaatsen van de eerste rij, gewoon spelen met de teller, bijvoorbeeld:
$ Lines = 1; (De waarde voor de teller 1)
$ Query = "";
$ Linearray = array ();
foreach (split ($ lineseparator, $ csvcontent) als $ line) {
$ Lijnen + +; (Wijst de eerste regel # 2 (header)
if ($ lijnen> = 3) {(Start op # 3 "iets hoger of gelijk is aan 3")
Geweldig script, maar ik ben met terugkerende problemen.
Nadat ik het script, het zegt "Gevonden in totaal 1 records in dit csv-bestand.".
Ik keek weer in mijn tafel en het toont een blanco.
Ik controleerde om ervoor te zorgen was er het juiste aantal kolommen en er waren.
Please help!
Bedankt,
Coulton
Als ik beperkt tot de klant toegang tot harde schijf hoe ga ik het CSV-bestand uploaden naar de server.for voorbeeld kan stellen we standaard waarde tot het dossier van de controle te uploaden
Dit was zeer nuttig voor mij ... maar ik moest een wijziging te maken voor het lezen van grote bestanden. Ik was in de war op het eerste, maar toen realiseerde het script laadt het hele bestand in het geheugen (rechts?). Dus hier is een aangepaste versie van de code, die lijnen in een tegelijk leest. hij leest in bestanden die lijken op
beginnen bestand:
2,3, -1
1, -2,4
einde bestand (met veel meer waarden). Ik wilde elke lijn tot een entry in de tabel en een ID met het regelnummer, evenals de eerste id die de grootte van de tafel (die niet later zal veranderen) zijn.
<? Php
/********************************/
/ * Code bij https://legend.ws/blog/tips-tricks/csv-php-mysql-import/
/ * Bewerk de items hieronder om de juiste waarden weerspiegelen
/********************************/
$ Databasehost = "localhost";
$ Databasenaam = "tomoku";
$ Eigen database = "root";
$ Databasepassword = "root";
$ Fieldseparator = "\ n";
$ Lineseparator = "\ n";
/ / Deze code leest tatami bestanden in de database
$ Con = @ mysql_connect ($ databasehost, $ database invoeren, $ databasepassword) or die (mysql_error ());
@ Mysql_select_db ($ databasenaam) or die (mysql_error ());
/ / Dit lussen over een bos van dossiers
for ($ r = 2; $ r <14; $ r + +) {
for ($ c = $ r; $ c
De volgende deed de truc voor mij:
LOAD DATA LOCAL LOW_PRIORITY INFILE
'C: \ \ Documents and Settings \ \ Administrator \ \ Desktop \ \ SigmaS1.csv'
INTO TABLE `mijndb`. "Mytable`
Ontsnapte VELDEN '\ \'
EINDE ','
Optioneel omsloten door '"'
LIJNEN EINDE '\ r \ n'
(`User`, `pwd`, `SNO`, `amt`, `ActiveRec");
Het script is het lezen van een extra lijn van het CSV-bestand. bijvoorbeeld als de CSV-bestanden heeft 25 records Het toont aan dat er zijn 26 records. Kunt u mij vertellen waar ik ben fout gaat?
Ik heb toegevoegd om te controleren of het gaat om een eerste lijn en loop verder als de eerste lijn.
dankzij
Net als Gary, Ik wil in staat zijn om een bestaande record te overschrijven, maar door een aanpassing van het, niet verwijderen van alle gegevens in de db. Sp ergens hier in de buurt:
if ($ addauto)
$ Query = "INSERT INTO $ databasetable waarden (",'$ linemysql');";
anders
$ Query = "INSERT INTO $ databasetable waarden ('$ linemysql');";
Hoe zou ik controleren om te zien of het record bestaat en vervolgens in plaats van Update dan invoegen?
Hoe sla ik de eerste regel / rij dat is een kop in csv-bestand en voeg de rest van de gegevens in db?
@ Gary
je zou kunnen gebruiken een @ mysql_query ("afkappen $ databasetable"); direct na de @ mysql_select_db verklaring.
Maar wees voorzichtig als deze actie zal wegvagen de gegevens en is niet omkeerbaar.
@ Kish
de huidige code niet mogelijk browsen voor / uploaden van het bestand.
U kunt het CSV-bestand gewoon in dezelfde map als de PHP-script, en gewoon de $ csvfile variabele gelijk is aan de bestandsnaam (zonder pad)
Hi all,
Hoe kan ik bevatten deze csv citaten in de datum "dag, maand datum, 2010" en de staat "prov, staat" naar een kolom in mijn data base? Ik zie veel voorbeelden, maar ik kan het niet krijgen om te werken. enige hulp zou goed zijn.
ak, 10037591,1, "dinsdag de 9 maart 2010 15:55:16", 59.7151, -151.4434,2.7,75.90,32, "Kenai schiereiland, Alaska"
thx
Bedankt, heeft deze code echt geholpen!
Hoe zou ik wijzigen om een formulier te worden weergegeven waarin de gebruiker bladert en selecteert het CSV-bestand te importeren in de tabel?
En ook hoe kon ik het zo maken dat elke keer een nieuw bestand wordt ingediend zou negeren wat momenteel wordt opgeslagen in de tabel?
Veel dank
Dit is erg handig code voor mij ..
bedankt.
Hoe krijg ik de bladeren bestand in plaats van het intypen van de volledige naam van het pad ..
Gelieve te helpen in deze.
dankzij
Ik begreep er niets van hoe het werk van een bestand te controleren. betekent in de eerste bladeren en kies een bestand en vervolgens in te dienen waar ik behoefte aan aangepast
Hallo,
Heeft enkele wijzigingen aangebracht. . Mijn txt-bestand heeft 3 kolommen, gescheiden door een "|" (pipe) teken. Het script geeft het bestand gegevens, telt de rijen, maar niet de gegevens in te voeren in de database. Eventuele opmerkingen?
$ 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 = "|";
$ Lijnen = 0;
$ Query = "";
$ Linearray = array ();
$ Count = 0;
foreach (split ($ lineseparator, $ csvcontent) als $ line) {
$ Count = $ count + 1;
$ Lijnen + +;
$ Lijn = trim ($ line, "\ t");
$ Lijn = str_replace ("\ r ","",$ lijn);
/************************************
Deze lijn ontsnapt aan het bijzondere karakter. te verwijderen wanneer er items zijn al ontsnapte in het CSV-bestand
************************************/
$ Lijn = str_replace ("'"," \ ", $ regel);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ regel);
$ Linemysql = imploderen (""",$ linearray);
if ($ addauto)
$ Query = "insert in indicatoren waarden ('$ tellen', '$ linemysql');";
anders
$ Query = "insert in indicatoren waarden ('$ linemysql');";
$ Query .= $ query. "\ N";
@ Mysql_query ($ query) or die (mysql_error ());
echo "$ linemysql \ n";
}
Uitstekend script! Ik had een klein sprongetje start voor een project waar ik bezig was en dit deed de truc.
Ik heb wel gemerkt iets vreemds ik echter het script aangepast om te werken met een formulier en ik heb wel gemerkt dat voor het zoeken, het laatste veld kreeg Vervloekt, want de nieuwe lijn char (ofwel \ r \ n of beide) was nog wordt opgenomen in de MySQL database.
Te dien einde, wanneer u het commando:
$ Lijn = str_replace ("\ r ","",$ lijn);
met:
$ Lijn = str_replace ("\ r',",$ lijn);
het zal het rendement ervan weerhouden om een probleem, als voor de nieuwe lijn, heb ik nog een beetje iets dat zorgt voor het invoegen van nieuwe records, maar updates bestaande records, zodat je niet eindigt met dubbele vermeldingen. Op de top van de onderstaande code, zal je zien waar ik hetzelfde vast voor de feitelijke nieuwe lijn char.
$ Linemysql = imploderen ("','",$ linearray);
$ Newlinemysql = str_replace ("\ n',",$ linemysql);
if ($ addauto) {
switch ($ databasetable) {
zaak ('adres'):
$ Duplicatevals = "adres waarden = (adres),
stad = WAARDEN (stad), staat waarden = (staat),
zip = WAARDEN (zip) ";
te doorbreken;
zaak ('eigenaar'):
$ Duplicatevals = "ownername = VALUES (ownername),
housetype = VALUES (housetype),
addresskey = VALUES (addresskey) ";
te doorbreken;
}
$ Query = "INSERT INTO $ databasetable waarden (",'$ newlinemysql ')
ON DUPLICATE KEY UPDATE
$ Duplicatevals ";
} Else {
$ Query = "INSERT INTO $ databasetable waarden ('$ linemysql')
ON DUPLICATE KEY UPDATE
$ Duplicatevals ";
}
Ook in mijn vorm heb ik de tabel naam en of ik de tafel wilde [boolean] "addauto" al dan niet als een enkele input van een drop-down (komma gescheiden), dan split het resultaat aan de bovenkant van de simplecsvimport script.
Tot slot, je moet onthouden om indexen in de database voor de "ON DUPLICATE ..." aan het werk, auto stappen zal niet werken in dit geval, dus je moet een secundaire index ingesteld op de automatische verhoging tabellen, de tabellen dat Don 't Autotoenamegebieden en hebben unieke velden te werken met de single-index als dat de route die u zou willen gaan.
Ik hoop dat dit helpt iemand!
Cheers!
Ik moet automatisch downloaden van gegevens uit een externe server. Het is een CSV-bestand, en ik moet het uit te pakken, en worden de gegevens opgeslagen in een MySQL database gemaakt dat ik. Er zijn meerdere databases. Het eerste deel is onder een van de databases dat iemand me geholpen hebben met en het werkt wonderwel. Ik een cron job en het downloadt het als automatisch gepland. Ik heb echter meer databases, en cant get de anderen aan het werk.
DEZE SECTIE HIERONDER werkt prima!!
--------------------------
#! / Bin / bash
deleteparam = '-delete-after';
# Deleteparam = "
# Directory = "-directory-prefix = / $ HOME / MyFolder / MyFolder / '
directory = "
# Userpwd = '-http-user = bla-http-password = blah'
toupper () {
echo $ 1 | tr '[: lower:] "" [: upper:] "
}
# If [-z "$ 1"], vandaar
# Echo gebruik: $ 0 tabel
# Exit
# Fi
ZIP = naam van gegevens bestand in remote server
ZIP = `toupper $ ZIP"
# Het bestand in de zip heeft een minder _
DATA = naam van de tabel in mijn MySQL database
DATA = "toupper $ data"
# Rm $ TABLE.csv.zip
# Rm $ DATA.csv
cd / $ HOME / MyFolder / MyFolder /
####### Krijgt de residentiële
wget ' https://3pv.mlslirealtor.com/Data3pv/DownloadBRSaction.asp?user_code=XXXXXX&password=XXXXXXX&data_type=datazip '-O $ ZIP.csv.zip
sleep 10
####### Pak het uit
pwd
ls-la
unzip-o $ ZIP.csv.zip
sleep 10
####### Laden
wget-verbose $ deleteparam $ map $ userpwd https://mywebsite/myfolder/import.php?table = $ data
slapen 300
###### Verwijdert u de bestanden
rm $ ZIP.csv.zip
rm $ DATA.csv
sleep 10
_ ---------------------------
Dit alles mogelijk WERKEN WONDERFUL
DIT IS WAT IK hulp nodig bij
--------------------------
1. Ik heb een script toe te voegen aan het bovenstaande bestand dat zal het downloaden van de foto's. Als je hieronder kunt zien Ik heb een script dat automatisch wordt de huidige datum en tijd die het script wordt gerund. Er server houdt pic van de laatste 7 dagen en wordt voortdurend bijgewerkt. Zodra dit script wordt gerund zal het downloaden van gegevens in de tabel gemaakt die ik.
2. Dan, ik heb een script dat de MySQL database op zoek naar items die foto's hebben en dan halen de werkelijke foto's direct vanaf hun externe servers queries. Dit csv-bestand niet downloaden foto's, alleen gegevens die ik kan gebruiken om een script uit te voeren om de foto's ophalen op een gegeven plek. Zie hieronder.
Hieronder vindt u de instructies die ik kreeg.
INSTRUCTIES
Foto gegevens worden opgehaald door de HTTP. De foto's data wordt eenmaal per dag bijgewerkt en is beschikbaar voor downloaden als een CSV-bestand. U kunt dan een script schrijven met behulp van de gegevens uit het CSV-bestand om terug te wijzen naar de beelden op ons imago server. U moet een WAARDE VOOR DE query string last_updt> 'JJJJMMDD HH: MM: SS "voor de URL om gegevens te retourneren. Het veld last_updt is de datum waarde voor de laatste keer dat een foto is veranderd op de aanbieding.
U moet de user_code en wachtwoord plaats houders (XXXX) te vervangen door de inloggegevens aan u verstrekt.
Stap 1: Om ophalen van de primaire notering fotogegevens CSV-bestand naar de onderstaande URL.
https://remotewebserver/Data3pv/DownloadBRSaction.asp?user_code=XXX&password=XXXX&query_str=last_updt% 20>% 20'YYYYMMDD% 20HH: MM: SS '& DATA_TYPE = FOTO'S
Stap 2: De foto's tabel gegevens moeten downloaden in een CSV-formaat.
Stap 3: Het gebruik van de Y-vlaggen en de ML nummer in de gegevens die u kunt koppelen terug naar ons imago locaties.
Onze primaire beeld directory pad is als volgt:
https://remoteserver/folder/folder/folder/Last3DigistsofML # / notering #. jpg
Bijvoorbeeld het primaire foto voor vermelding van het aantal 1899430 bevindt zich op
https://remoteserver/folder/folder/1/430/1899430.jpg
Onze aanvullende image map pad structuur is als volgt:
https://remoteserver/mlsphotos/full/PhotoPosition/Last3DigistsofML # / notering # _photoPosition.jpg
Bijvoorbeeld-De tweede foto voor het aanbieden van nummer 1899430 is gelegen op
https://remoteserver/folder/folder/2/430/1899430_2.jpg
Hallo, hij vertelt me het record tellen, maar niet zetten de gegevens in de database
Hoop dat je kan helpen
Nathan
de opdracht is: afkappen tabelnaam.
kun je de volgende on line 58:
@ Mysql_query ("afkappen $ databasetable");
maar dit is niet omkeerbaar! Wees dus voorzichtig
Hoe kan ik mijn reeds gevulde tafel leeg voordat u het nieuwe bestand?
of kan ik update van een reeds bestaande input?
TRUNCATE, update? Hoe krijg ik dit in de query?
@ Andy Broeders : Dit betekent dat de query probeert het invoegen van een record met een aantal kolommen die niet overeenkomen met die van de database tabel.
1) Weet je zeker dat het CSV-bestand exact hetzelfde aantal kolommen als de tabel in de database heeft?
2) Is het veld scheidingsteken in dit CSV-bestand echt een komma? of is het een tabblad voor bijvoorbeeld of een andere? Als het niet een komma, verander de waarde van $ fieldseparator op lijn 12
3) De tabel moet er al worden gecreëerd in de database voordat u gegevens te laden in. Weet je zeker dat je het hebt?
Hallo,
Ik zou heel graag dit script gebruiken, maar ik weet niet zeker wat ik verkeerd doe. Ik krijg het zelfde probleem met de bovengenoemde gegevens niet laden in de db. Het vindt het juiste aantal rijen maar niets te zien in de db.
Ik veranderde lijn 88 @ mysql_query ($ query) or die (mysql_error ());
en krijg dit bericht "Kolom aantal komt niet overeen met waarde aantal in rij 1"
@ Claus
Hallo Claus.
Is de CSV echt bevatten een record?
Omdat het script het stadium bereikt waarin het uitgangen van het aantal records, ik neem het niet mislukken als hij is aangesloten op de database (regels 56-57) dus dat is het probleem niet.
Het is mogelijk dat de query te voegen gegevens niet.
Probeer vervanging van lijn 88 met:
mysql_query ($ query) or die (mysql_error ());
en kijk welke fout je krijgt.
@ Okoth
Hallo Okoth.
Het meest waarschijnlijk, kunt u zich te ontdoen van de lijnen 33-54 en vervang ze met deze regel:
$ Csvcontent = @ file_get_contents ("... https://");
Vervang de stippen met de juiste url (directe url naar het CSV-bestand)
@ Adrian
Hallo Adrian.
Drupal, zoals u opgemerkt, heeft complexe tabel structuren. Afhankelijk van wat voor soort gegevens die u importeert, is het zeer waarschijnlijk dat deze gegevens moet worden opgesplitst in meerdere tabellen, meestal met een gemeenschappelijk buitenlands-toets, zoals de node id.
Helaas zou het bovenstaande script niet helpen dat te doen.
Bedankt voor het script. Heel begrijpelijk.
Hoe kan ik dit script aanpassen zodat het haalt en opslaan van een csv-bestand van het internet in MySQL?
Hi All
Ik ben Drupal gebruikt om een nieuwe website te bouwen, de uitdaging die ik nu ben heb is dat ik nodig heb om gegevens te importeren uit een CSV-bestand in een MySQL database waarin gedeelde tabellen heeft daarom een aantal van de velden in die ik nodig om gegevens te importeren csv zijn in verschillende delen van dezelfde database zal dit script werk voor mij? Als dit niet kunnen CSV-bestand worden geïmporteerd met een andere methode?
Gelieve te adviseren, bedankt voor alle hulp.
Wat
Adrian
Hallo iedereen!
Lijken het script werkt ... behalve dat het niet de gegevens om de mysql te schrijven hebben ...
Net als bij Chris: Het script is voltooid, en zelfs uitgangen het record tellen, maar niet de database touch helemaal ... maar vertelt me: Gevonden in totaal 1 records in dit csv-bestand.
Wat doe ik verkeerd doen (ben een noob op PHP en MySQL)
Bedankt
Claus
Hoi Stanley, het probleem is met de enkele aanhalingstekens. De blog-software herschrijft ze hier. Vervang gewoon 'en' met '
PS: het bovenstaande commando is om een csv-bestand direct te laden in de database van de mysql prompt. Dit is leuk, maar niet in verband met het bovenstaande script
het zegt om deze te laden in de databank
LOAD DATA LOCAL infile 'pad' in de tabel tabelvelden beëindigd door ',' lijnen beëindigd door '\ n';
verander ik het pad en de tafel zijn gaan op maar het geeft me een fout die haar de verkeerde syntax-code 1064
Kan iemand mij wat advies over wat te doen
dankzij
Stan
Met betrekking tot de aanhalingstekens probleem, kunt u gewoon gebruik maken van dit:
$ Linearray = preg_split ("/,(?=(?:[^ \ "] * \" [^ \ "] * \ ")*(?![^ \"] * \ "))/", $ line );
Cheers,
Gaz.
Beste Chris,
vervang dan:
@ Mysql_query ($ query);
met:
@ Mysql_query ($ query) or die (mysql_error ());
en laat me weten wat fout is je geeft
Hey iedereen,
Hou van dit script, en het werkte prima, nu plotseling het script gewoon plaatst de administratie. Het script is voltooid, en zelfs uitgangen het record tellen, maar niet raakt de database op alle ...
Enig idee?
Bedankt
C
Hoi Mark,
de eerste plaats is het te verwijzen naar het bestand dat u geselecteerd in het $ uitvoerbestand variabele.
ten tweede, dit bestand moet beschrijfbaar zijn. Ik neem aan dat je Linux gebruikt, niet Windows, want dit is over het algemeen niet een probleem met Windows.
Op linux, gewoon SSH op de machine, naar de map waar de output bestand is, en typ: chmod 777 bestandsnaam
waar 'bestandsnaam' is de werkelijke bestandsnaam.
Als u niet beschikt over SSH, vele FTP clients ondersteunen toestemming. Voor dit doel, FTP naar de map met het output bestand, selecteer vervolgens dit bestand, en zoek uit deze ftp-software de mogelijkheid om toestemming te wijzigen. Zet deze op 777, of 'lezen, schrijven, uitvoeren' voor iedereen.
Hi all,
Bedankt voor het script. Ik ben een noob op PHP en MySQL, zodat ik echt zoiets als dit waarderen. Ik kreeg zoveel genereren van de "Bestand is niet beschrijfbaar, controleer machtigingen" foutmelding in mijn browser. Kan iemand uitleggen van de opmerking over het instellen van de toestemming naar 777? Ik ben met behulp van een Excel-gegenereerd. Csv-bestand? Dank bij voorbaat.
Ik kan alleen maar de eerste regel van mijn CSV-bestand worden geïmporteerd in de database.
Hier is een kopie van het logbestand:
invoegen in de productie waarden (", '2008-10-21 ', '50', '50 ', '50', 'dit is de eerste noten lijn', 'dit is nota lijn 2', 'dit is nota lijn 3 ', '0000-00-00', '0000-00-00 ', '0000-00-00', '456 Morningside Ave ',' Ste. 512 ',' Brooklyn ',' NY ', '10023', 'Joe', 'Klant 1');
invoegen in de productie waarden (", '2008-10-09 ', '50', '50 ', '50', 'dit is de eerste noten lijn',",",' 2008-10-09', '2008 . -10-14 ', '0000-00-00', '456 Morningside Ave ',' Ste 512 ',' Brooklyn ',' NY ', '10023', 'Joe', 'Klant 1');
invoegen in de productie waarden (", '2008-10-14 ', '25', '25 ', '25', 'OPMERKINGEN 1',",",' 2008-10-14', '2008-10-17 ',' NULL ', '555 ergens', 'suite 123', 'nieuwe y' 'New York',, '10001 ',' Joe ',' Naam 1 ");
invoegen in de productie waarden (", '2008-10-16 ', '45', '45 ', '45',",",",' 2008-10-16', '2008-10-24 ',' NULL',",",",",",' Tom',");
invoegen in de productie waarden (", '2008-10-01 ', '34', '34 ', '34',",",",' 2008-10-02', '2008-10-04 ',' 2008-10-04',",",",",",' Steve',");
invoegen in de productie waarden (", '2008-10-17 ', '50', '50 ', '50', 'dit is de eerste noten lijn',",",' 2008-10-03', '0000 . -00-00 ', '0000-00-00', '456 Morningside Ave ',' Ste 512 ',' Brooklyn ',' NY ', '10023', 'Joe', 'Klant 1');
invoegen in de productie waarden (", '2008-10-18 ', '25', '25 ', '25', 'OPMERKINGEN 1',",",' 2008-10-04', '0000-00-00 ', '0000-00-00', '555 ergens ',' suite 123 ',' nieuwe y New York ',' ', '10001', 'Joe', 'Naam 1 ");
invoegen in de productie waarden (", '2008-10-19 ', '45', '45 ', '45',",",",' 2008-10-05', '0000-00-00 ',' 0000-00-00',",",",",",' Tom',");
invoegen in de productie waarden (", '2008-10-20 ', '34', '34 ', '34', 'nieuwe noten',",",' 2008-10-06', '0000-00-00 ', '0000-00-00',",",",",",' Steve',");
invoegen in de productie waarden (", '2008-10-21 ', '12', '12 ', '12', 'nog nieuwer merkt',",",' 2008-10-07', '0000-00- 00 ', '0000-00-00',",",",",",' merk',");
invoegen in de productie waarden (", '2008-10-22 ', '1', '0 ', '0',",",",' 2008-10-08', '0000-00-00 ',' 0000-00-00',",",",",",",");
invoegen in de productie waarden (", '2008-10-23 ', '2', '0 ', '0',",",",' 2008-10-09', '0000-00-00 ',' 0000-00-00',",",",",",",");
invoegen in de productie waarden (", '2008-10-24 ', '3', '0 ', '0',",",",' 2008-10-10', '0000-00-00 ',' 0000-00-00',",",",",",",");
invoegen in de productie waarden (", '2008-10-15 ', '0', '0 ', '0', 'later',",",' 2008-10-11', '0000-00-00 ' , '0000-00-00',",",",",",",");
invoegen in de productie waarden (", '2008-10-16 ', '0', '0 ', '0', 'later nog steeds',",",' 2008-10-12', '0000-00-00 ', '0000-00-00',",",",",",",");
invoegen in de productie waarden (", '2008-10-17 ', '0', '0 ', '0', 'later nog steeds',",",' 2008-10-13', '0000-00-00 ', '0000-00-00',",",",",",");
invoegen in de productie waarden (", '2008-10-18 ', '0', '0 ', '0', 'later nog steeds',",",' 2008-10-14', '0000-00-00 ', '0000-00-00',",",",",",");
invoegen in de productie waarden (", '2008-10-19 ', '0', '0 ', '0', 'laatste',",",' 0000-00-00', '0000-00-00 ' , '0000-00-00',",",",",",");
invoegen in de productie waarden (", '2008-10-01 ', '34', '34 ', '34', 'allernieuwste',",",' 2008-10-02', '2008-10-04 ', '2008-10-04',",",",",",' Bruce');
invoegen in (","); productie waarden
Het zegt dat het plaatsen van 20 records, maar alleen de eerste maakt het in de database. Alle gedachten?
het niet invoegen in de database tabel waar ik dat wil ingevoegd ..: (
Nice work chief
Hi all,
Ik maakte een kleine wijziging aan uw code, dus het werkt als een CSV-importeur, zoals het hoort.
CSV-s eerste regel moeten houden met de kolomnamen die u wilt importeren, dus verander de foreach lus:
foreach (split ($ lineseparator, $ csvcontent) als $ line) {
$ Lijnen + +;
$ Lijn = trim ($ line, "\ t");
$ Lijn = str_replace ("\ r ","",$ lijn);
/ * Haal kolom Namen uit eerste regel van het CSV * /
if ($ lijnen == 1) {
$ Columns = explode ($ fieldseparator, $ regel);
$ Columnsql = imploderen (",",$ kolommen);
echo $ columnsql;
voort te zetten;
}
/************************************
Deze lijn ontsnapt aan het bijzondere karakter. te verwijderen wanneer er items zijn al ontsnapte in het CSV-bestand
************************************/
$ Lijn = str_replace ("'"," \ ", $ regel);
/*************************************/
$ Linearray = explode ($ fieldseparator, $ regel);
$ Linemysql = imploderen ("','",$ linearray);
if ($ addauto)
$ Query = "INSERT INTO $ databasetable ($ columnsql) waarden ('$ linemysql');";
anders
$ Query = "INSERT INTO $ databasetable ($ columnsql) waarden ('$ linemysql');";
$ Query .= $ query. "\ N";
@ Mysql_query ($ query);
}
Hoe groot is het bestand dat u probeert te importeren?
in ieder geval, probeer dan het toevoegen van de volgende regel na de eerste opening van tags:
set_time_limit (300);
Dit geeft het script tot 5 minuten (300 seconden) van de uitvoeringstermijn.
Vervanging van 300 met 0 zal toestaan te nemen zoveel tijd als nodig is.
Hi there, leuk script bedankt. Bij het uitvoeren krijg ik:
Fatal error: Maximum uitvoeringstermijn van 30 seconden overschreden in op lijn 63
Is er iets wat ik kan doen om dit te omzeilen?
Robbie, bedankt voor je aanvulling, het is heel welkom. Helaas werkt het niet meteen toen ik het te kopiëren. Ik denk dat er iets ontbreekt, omdat de code is verdeeld over twee posten.
Zou u de code zoals hier weergegeven? Is er iets ontbreekt?
Brad, als je had gedownload eerder dan vorige week, vervang dan de '<?' aan de top met '<? php' (verwijder spatie)
Ik krijg de eerste zo veel van het afgesneden en de rest gewoon code in mijn browser. Ik weet dat php werkt omdat de rest van de site werkt.
Ik deed een upgrade naar php5 doet dat er toe?
)
/ / Overslaan omdat het valt binnen de slechte array-elementen
anders
$ Newarray [$ y] = str_replace ('"',",$ linearray [$ y]);
$ Linearray = array_values ($ newarray) / / de sleutels teruggezet naar de nieuwe array
$ X + +;
}
}
}
Nou, hier is de oplossing op mijn vorige reactie:
Steek dit in tussen:
$ Linearray = explode ($ fieldseparator, $ regel);
... Voegen codefragment hieronder ....
$ Linemysql = imploderen ("','",$ linearray);
Vindt en houdt alle "Stuff, meer dingen" samen voor het imploderen.
$ A = "";
$ B = "";
$ Qoutecount = 0;
for ($ x = 0; $ x -1) {
$ Qoutecount + +;
if ($ qoutecount == 1)
$ A = $ x; / / bewaar het in eerste aanleg
elseif ($ qoutecount == 2) {
$ Quotecount = 0;
$ B = $ x; / / bewaar de tweede aanleg
/ / Dat doet ... verzamelen alle elementen van $ a naar $ b $ a en negeren elementen iets na $ a naar $ b in de nieuwe array;
$ Newa = ""; / / initialiseren nieuwe string.
for ($ z = $ a, $ z $ a & & $ y
Houdt geen rekening met gebieden zoals deze lijn:
Fname, lname, "Company, Inc", stad, staat, Zip
Bedrijf en Inc krijgt gesplitst in twee verschillende kolommen.
Rengaraj,
het CSV-bestand moet in dezelfde plaats als de PHP-bestand.
Ook hoef je niet echt aan dezelfde csv-bestand naam te gebruiken.
bbqrest.csv is een voorbeeld, het bestand deze naam vervangen door uw eigen.
Kan iemand een antwoord snel Ik heb een csv-bestand bbqrest.csv op de juiste pad (root) ..
Ik krijg deze foutmelding Bestand niet gevonden. Zorg ervoor dat u hebt opgegeven het juiste pad.
Het zou een goed idee om toe te voegen te voorkomen headers binnen de CSV van indiening in de database. Of om een script dat trekt de eerste rij en creëert een db met behulp van deze waarden als de kolomnamen te maken.
Steve,
Je zou dit script in een web-toegankelijk map, na het veranderen van de variabelen die veranderd moeten worden. Lees het commentaar in het script om uit te vinden wat je nodig hebt om aan te geven. Bel vervolgens het script in een web browser, zoals:
https://www.example.com/path-to-script/simplescvimport.php
Totale newbie - scheurt mijn haren uit probeert te importeren in Excel csv phpMyAdmin (op een Mac). Zou graag willen weten precies waar en wat ik doe met dit php script ...?
Wow cool is ... had idee na het lezen van uw codering ... veel dank
Hallo daar, een kleine wijziging voor auto verhogen waarden in kolom 1 (id veld)
zie variabele $ count.
ola, Enrico.
/ / $ Con = @ mysql_connect ($ databasehost, $ database invoeren, $ databasepassword) or die (mysql_error ());
/ / @ Mysql_select_db ($ databasenaam) or die (mysql_error ());
$ Lijnen = 0;
$ Query = "";
$ Linearray = array ();
$ Count = 0;
foreach (split ($ lineseparator, $ csvcontent) als $ line) {
$ Count = $ count + 1;
$ Lijnen + +;
$ Lijn = trim ($ line, "\ t");
$ Lijn = str_replace ("'"," \ ", $ regel);
$ Linearray = explode ($ fieldseparator, $ regel);
$ Linemysql = imploderen ("','",$ linearray);
$ Query = "INSERT INTO` uw db tabel `VALUES ('$ tellen', '$ linemysql');";
$ Query .= $ query. "\ N";
@ Mysql_query ($ query);
}
/ / @ Mysql_close ($ con);
Thanks a lot deze opgeslagen veel tijd! Leuk script.
Ik gebruik meestal phpmyadmin, maar waar, in het geval men niet hebt geïnstalleerd, en heeft geen shell-toegang (zoals de meeste van de shared hosting providers), dit kan komen in zeer handig.
Erg handig, dank je.