PHP-skript för att importera CSV-data i MySQL

19 februari 2007

Detta är ett enkelt skript som gör att du kan importera CSV-data i din databas. Detta kommer praktiskt eftersom du kan enkelt redigera fälten ladda upp den tillsammans med CSV-fil och kalla det från nätet och det kommer att göra resten.

Det kan du ange avgränsare i detta CSV-filen, om det är en koma, tillåter en flik etc. Det har också att du valde den linjen separator tillåter dig att spara resultatet till en fil (en så kallad data sql dump).

Det tillåter dig också att inkludera ett tomt fält i början av varje rad, som vanligtvis är en automatisk ökning heltal primärnyckel.

Detta skript är huvudsakligen användbar om du inte har phpmyadmin, eller om du inte vill att besväret med att logga in och föredrar ett par klick lösning, eller om du bara är en kommandotolk kille.
Se bara till att tabellen redan är skapad innan du försöker dumpa data.
Vänligen skicka dina kommentarer om du fick någon felrapport.

Ladda ner filen här

Tags:
  1. Roulette System
    24 Maj 2011 kl 20:09

    Tack för info

  2. Arbeta och analysera CSV-filer text & PHP
    15 maj 2011 kl 17:52
    # 2
  3. Joln
    11 Maj 2011 kl 07:52

    Great script! TNX mycket

  4. CNA Klasser Texas
    11 Maj 2011 kl 07:10

    Jag har inga ord för att uppskatta detta inlägg ... .. verkligen att jag är imponerad av det här inlägget .... Den person som skapar det här inlägget var det ett stort mänskligt .. tack för delade detta med

    oss.

  5. CNA Klasser Hawaii
    11 Maj 2011 kl 07:07

    Ja ... thats verkligen en informativ post. Jag är ny bloggare att det skulle vara säker på användbar information för mig. Tack för att dela!

  6. Fjädervilt Owl
    8 maj 2011 kl 00:19

    Script fungerar bra för mig ganska mycket som det är. Många tack!

  7. UMAir
    2 maj 2011 kl 07:39

    Hej ...
    Jag står inför ett problem, när jag använder detta, dess visar ett felmeddelande som säger
    "Föråldrad: Function split () är föråldrat i C: \ wamp \ www \ test1 \ simplecsvimport.php på rad 64
    Filen är inte skrivbar, kontrollera behörigheter. Hittade totalt 41 poster i den här CSV-fil. "

    Pls svara, vad är fel!
    tack på förhand!

  8. justkid
    April 7, 2011 kl 10:25

    Jag är verkligen förvirrad med denna kod!
    men jag brukar försöka upp!
    BTW, hur koden eller fältet html att kalla denna kod

  9. Jorge Dias
    14 mar 2011 kl 19:01

    Tack, mycket bra csv importör.
    Men jag hittade ett litet problem, det fungerar bara med CSV-filen med strukturen: "fält1", "field2", "field3", etc. men jag Hava en CSV-fil så här: fält1; field2, filed3, etc

    Det enda jag kan förändra är $ fieldseparator men hur kan jag säga "skriptet att filen inte använder" (fältavgränsare)?
    Min ideia var en combobox med $ fieldseparator (eller ;) och ett annat med $ fielddelimiter ("eller ingenting)

    Tack på förhand.

  10. Rusty
    3 februari 2011 kl 14:56

    Någon aning om hur man får detta skript för att arbeta för fält som omges med citationstecken, så att områden med kommatecken i dem inte får läsa som en ny post?

    Jag har data som omfattar kommatecken som dollarn belopp och ett kommentarerna där användare kan ha använt ett kommatecken. Jag behöver hela fältet importerade och skriptet behandlar dem som nya områden.

  11. qwewe
    23 januari 2011 kl 14:56

    @ Mark Cloyd
    "Adress = värden (adress)
    Jag får ett felmeddelande här som Parse error: syntax error, oväntad "="

  12. ronbowalker
    15 jan 2011 kl 17:54

    @ Joofoo
    Jag har laddat din kod men jag har ingen uppdaterad information om MySQL-databas ...

    CSV innehåller:
    Header -> användarnamn, lösenord, meddelande, e-post, bild, datum
    ROW2 -> Bill, dude,,,,
    Row3 -> Jane, gal,,,,
    Row4 -> David, barn,,,,

    Och här är koden ...:
    <? Php

    / / Uppsättning från iphonelogin.php fil i "remote"-mappen ...
    / * Ansluta till db * /
    / / $ Link = mysql_connect ("ronbo.db.6405862.hostedresource.com ',' ronbo", "Pepper0689") or die ('Kan inte ansluta till DB');
    / / Mysql_select_db ("ronbo ', $ link) or die (" Kan inte välja DB');

    / / http://www.ihappyapps.com/DataFolder/loader.php
    /********************************/
    / * Kod vid http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
    / * Redigera uppgifterna nedan för att avspegla lämpliga värden
    /********************************/
    $ DatabaseHost = "dbhost";
    $ Databasename = "namn";
    $ Databasetable = "bord";
    $ Databaseusername = "användarnamn";
    $ Databasepassword = "lösenord";
    $ Fieldseparator = "";
    $ Lineseparator = "\ n";
    $ Csvfile = "spreadsheet.csv";
    /********************************/
    $ Addauto = 1;
    /********************************/
    $ Spara = 0;
    $ Utdatafil = "output.sql";
    /********************************/

    if (! file_exists ($ csvfile)) {
    echo "Server fick din begäran, men CSV-filen du vill ladda in i databasen inte är närvarande ... .. \ n";
    exit;
    }

    $ CHUNKSIZE = 1 * (1024 * 1024);
    $ File = fopen ($ csvfile, "rb");
    if (! $ file) {
    echo "Fel vid öppning av datafil. \ n";
    exit;
    }

    $ Size = Filstorlek ($ csvfile);

    if (! $ storlek) {
    echo "Filen är tom. \ n";
    exit;
    }

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

    $ Lines = 0;
    $ Förfrågningar = "";
    medan (! feof ($ fil)) {
    $ Csvline = fgets ($ file, $ CHUNKSIZE);

    $ Rader + +;
    if ($ rader <2) fortsätta;

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

    $ Rad = str_replace ("\ r ","",$ linje);

    /************************************************* ************************************************** *********
    Denna linje försvinner den speciella karaktär. ta bort det om poster redan flytt i CSV-filen
    ************************************************** ************************************************** ********/
    $ Rad = str_replace ("'"," \ '", $ line);
    /************************************************* ************************************************** ********/

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

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

    $ Query = "INSERT INTO $ databasetable värden (" $ linemysql');";

    if ($ spara) $ frågor .= $ query. "\ N";

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

    $ Rader -= 3;

    @ Mysql_close ($ con);

    <>

    Jag kunde verkligen behöva lite hjälp med att få detta att fungera ...
    Ron

  13. joofoo
    11 jan 2011 kl 11:16

    @ Roy
    Jag ändrade ditt manus, så att den förbrukar betydligt mindre minne vid behandling av stora filer (det slog php minne gräns när jag försökte använda den på ett 100MB CSV-fil). Förändringarna är följande:


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

    $ Size = Filstorlek ($ csvfile);

    if (! $ storlek) {
    echo "Filen är tom. \ n";
    exit;
    }

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

    $ Lines = 0;
    $ Förfrågningar = "";
    medan (! feof ($ fil)) {
    $ Csvline = fgets ($ file, $ CHUNKSIZE);

    $ Rader + +;
    if ($ rader <2) fortsätta;

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

    $ Rad = str_replace ("\ r ","",$ linje);

    /************************************************* ************************************************** *********
    Denna linje försvinner den speciella karaktär. ta bort det om poster redan flytt i CSV-filen
    ************************************************** ************************************************** ********/
    $ Rad = str_replace ("'"," \ '", $ line);
    /************************************************* ************************************************** ********/

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

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

    $ Query = "INSERT INTO $ databasetable värden (" $ linemysql');";

    if ($ spara) $ frågor .= $ query. "\ N";

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

    $ Rader -= 3;

    @ Mysql_close ($ con);

    Tack,

  14. Khaled
    11 jan 2011 kl 10:35

    @ Khaled A
    Hur kan jag exportera UTF8 Excel för att output.sql
    tack

  15. Khaled
    11 jan 2011 kl 09:46

    Jag försökte skriptet men output.sql är writting konstiga saker,
    infoga i test_excel värden ("PK |!??????? Q K5 q q K5 q q q K5 ....

    gillar dessa saker
    Hur kan jag åtgärda detta problem. någon särskild mall för Excel-ark?

  16. Warren
    30 december 2010 kl 18:57

    Hej killar, ville bara låta dig alla vet att jag har hittat någon att skriva mig själva programmet jag behöver.

  17. Warren
    29 december, 2010 kl 01:31

    @ Warren

    /********************************/
    Den här filen innehåller många försök till ändringar av Warren (inte en programmerare) den 28 dec 2010 och framåt bygger på synpunkter vid källan plats och annan info så att detta program i en han behöver. Detta är mycket ofullständig. Hjälp är mest uppskattade och mycket välbehövliga.

    Linjer la att skapa rutorna för webbadress databas och lösenord etc.
    /********************************/

    Välkommen till servern bli Utility

    Detta program löper från datorn för att befolka två tomma bord i en ny MySQL-databas på din webbplats genom: ladda upp varje filnamn mindre utbyggnad, med ett unikt nummer framför som en motvikt till bord keywords_categories, och sedan därefter tilldelar nummer 1 i den tomma kolumnen framför den första Colum av data från den filen, och ökar antalet med en för varje påföljande fil bearbetas från den katalogen, så att antalet assigend till kategorin namn i tabellen matchar sökorden som hör till det som är sedan laddas upp till bordet sökord.

    Detta görs för alla csv-filer i en viss katalog på din EU.

    Man ignorerar de första fem raderna i CSV-filen.

    Webbplats URL:
    Databas Namn:
    Databas Användarnamn:
    Databas Lösenord:
    Path of katalog som innehåller filer att ladda upp:

    /********************************/
    Fråga
    Hur får jag ovan data från indatarutor till program för att matcha den begärda nedan?
    /********************************/

    <? Php
    /********************************/
    Linje tillsätts för att förhindra timeout på större filer.
    /********************************/

    set_time_limit (0);

    /********************************/
    Hämta filen namn på filer som skall bearbetas, ta bort filnamnstillägget sedan använda dem för att ladda upp som kategori namn till bord keywords_categories.
    /********************************/

    /********************************/
    Tar bort filnamnet filändelser
    kopieras från www perlmonks org /? node_id = 151232
    /********************************/

    sub parse_out_extension {
    die ("Inget filnamn att tolka. \ n") if (@ _!);

    min ($ file) = @ _;
    my @ bitar;

    karta {push (@ bitar, $ _)} split (/ \ /, $ fil.)

    min $ slut = pop (@ stycken);
    $ File = ~ s / \ $ slut / /.

    avkastning ($ file) om $ fil;

    /********************************/
    / * Original kod på http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
    / * Redigera uppgifterna nedan för att avspegla lämpliga värden
    /********************************/
    $ DatabaseHost = "localhost";
    $ Databasename = "test";
    $ Databasetable = "prov";
    $ Databaseusername = "test";
    $ Databasepassword = "";
    $ Fieldseparator = "";
    $ Lineseparator = "\ n";
    $ Csvfile = "filename.csv";
    /********************************/
    / * Vill du lägga till en ampty fält i början av dessa poster?
    / * Obs av Warren i fallet med de sökord som är de första kolumn med data i varje fil, en fil för fil grundval denna nya tomma coum plats dån Frot av sökorden måste förändras så att den fångar som tilldelats kategori namn som består av filnamnet mindre utbyggnad och placerar den i den nya tomma första kolumnen.
    / * Detta är användbart om du har en tabell med det första fältet är ett AUTO_INCREMENT heltal. Obs av Warren. Detta är vad som behöver när det gäller filnamnen mindre exteniosn som upoaded till bord keywords_categories.
    / * Och CSV-filen inte har såsom tomma fältet innan posterna.
    / * Ange 1 för ja och 0 för ingen. OBS: inte satt till 1 om du är osäker.
    / * Detta kan dumpa data i fel områden om detta extra fält finns inte i tabellen. Obs av Warren sannolikt behöver inte denna fil jag mitt fall, men bara en gissning från min sida men behöver se behov om något.
    /********************************/
    $ Addauto = 1;
    /********************************/
    / * Vill du spara MySQL frågor i en fil? Om ja ange $ spara till 1.
    / * Tillstånd på filen bör sättas till 777. Antingen lägga upp en sample via FTP och
    / * Ändra behörigheterna eller köra vid prompten: touch output.sql & & chmod 777 output.sql
    /********************************/
    $ Spara = 0;
    $ Utdatafil = "output.sql";
    /********************************/

    if (! file_exists ($ csvfile)) {
    echo "Filen hittades inte. Se till att du angett rätt sökväg \ n ".
    exit;
    }

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

    if (! $ file) {
    echo "Fel vid öppning av datafil. \ n";
    exit;
    }

    $ Size = Filstorlek ($ csvfile);

    if (! $ storlek) {
    echo "Filen är tom. \ n";
    exit;
    }

    $ Csvcontent = fread ($ file, $ storlek);

    fclose ($ fil);

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

    /********************************/
    För att undvika att föra in fyra första raderna av adveristing rubriken i och en tom rad. Linjen är lika med noll kod ersattes med nedan kod.
    /********************************/

    $ Lines = 1, (Värdet för räknaren är 1)
    $ Förfrågningar = "";
    $ Linearray = array ();

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

    $ Rader + +; (Tilldelar den första raden # 2 (header)

    if ($ linjer> = 5) {(Start på # 5 "något högre eller lika med 5?)

    $ Förfrågningar = "";
    $ Linearray = array ();

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

    $ Rader + +;

    $ Rad = trim ($ line, "\ t");

    $ Rad = str_replace ("\ r ","",$ linje);

    /************************************
    Denna linje försvinner den speciella karaktär. ta bort det om poster redan flytt i CSV-filen
    ************************************/
    $ Rad = str_replace ("'"," \ '", $ line);
    /*************************************/

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

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

    if ($ addauto)
    $ Query = "INSERT INTO $ databasetable värden (",'$ linemysql');";
    annat
    $ Query = "INSERT INTO $ databasetable värden (" $ linemysql');";

    $ Frågor .= $ query. "\ N";

    /************************************
    Denna bit av koden nedan lades till nu visa felmeddelanden.
    ************************************/

    $ Result = mysql_query ($ query);

    / / Kontrollera resultatet
    / / Detta visar den verkliga frågan skickas till MySQL, och felet. Användbart för felsökning.
    if (! $ result) {
    $ Message = 'Ogiltig fråga: ". mysql_error (). "\ N";
    $ Message .= "Hela frågan:". $ Query;
    die ($ meddelande)
    }

    @ Mysql_close ($ con);

    if ($ spara) {

    if (! is_writable ($ utdatafil)) {
    echo "Filen är inte skrivbar, behörigheter kontrollera. \ n";
    }

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

    if (! $ fil2) {
    echo "Fel vid skrivning till utfil \ n."
    }
    else {
    fwrite ($ fil2, $ frågor);
    fclose ($ fil2);
    }
    }

    }

    echo "Hittade totalt $ linjer poster i den här CSV-fil. \ n";

    ?>

  18. Warren
    28 december 2010 kl 22:30

    Bara en liten rättelse till min begäran, de två tabellerna i databasen MqSQL jag nämnde är faktiskt kallas:

    keywords_categories

    sökord

  19. Warren
    28 december 2010 kl 22:10

    @ Warren

    Likaledes skulle bara av nyfikenhet IT-processer också en txt-fil, (som har bara en lista med ord på det) på samma sätt?

    (Jag är ny på detta, och jag vet kan vara mycket begärt, så om någon kunde ta den här lilla projektet för mig, om det är lämpligt, vi kanske kunde diskutera min betala en liten summa för sin tid till att göra förändringar i möter mina behov? Snälla låt mig veta.)

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

  20. Warren
    28 december 2010 kl 21:37

    Jag är inte en programmerare. Jag ser ditt manus och det kan vara nära vad jag behöver, eller kan kanske ligga till grund för vad jag behöver, jag är inte säker.

    Jag behöver för att utföra samma uppladdning och om igen men från en annan underkatalog varje gång från min hårddisk, för en lista på CSV-filer, och till en annan MySQL DB varje gång (på en differret webbplats varje gång). I de flesta fall db inte kommer att ha några uppgifter i den, men det skulle vara perfekt (men inte nödvändigt) om manuset fortfarande kunde arbeta med en db som hade uppgifter, utan att påverka befintliga data).

    Jag behöver den för att logga in på db på servern (det borde fråga mig för adressen till webbplatsen och db användarnamn och lösenord, etc).

    Jag behöver något som låter mig bläddra och välja en katalog namn på min hårddisk, eller skriva in det.

    Då processen varje CSV-filen i den katalogen, en efter en annan, enligt följande:

    På varje fil som jag behöver det först att ta filnamnet (minus förlängning) och ladda upp den till dB i tabellen kategori. Denna tabell innehåller en numrerad nyckel som man sedan tilldelas det namnet.

    Jag behöver då skriptet att ladda upp bara ordet Colum (1: a Colum av data) av den filen till bord ord, och lägg till passande nubmer för den kategori namn från den första filen.

    Det bör noteras att CSV-filen ofta innehåller tre rader med text och en tom rad, alla fyra som jag vill ignoreras och inte upp. Det finns ofta tomma rader på te eend av filen jag också vill att det ska ignorera dessa, samt ignorera alla andra kolumner som får eller inte får i CSV-filen. I vissa fall CSV-filen inte kan ha någon rubrik eller andra kolumner.

    Sen nästa fil, tills det slut på filer i katalogen.

    Då skulle jag vilja att tala om för mig "avslutad.", Och om några fel att säga mig.

    Kan någon av er hjälpa mig med detta?

  21. Alfa
    26 december 2010 kl 18:32

    Tack för att du delar excel med mysql script, detta är mycket användbart för mig.

  22. pruthvi
    24 december, 2010 kl 16:09

    ya koden fungerar men nw är att få mitt data omges av citationstecken @ Suman

  23. Suman
    23 december 2010 kl 14:18

    Suman :
    @ Pruthvi
    Hej,
    Använd nedan ges koden ... ...

  24. Suman
    23 december 2010 kl 14:16

    @ Pruthvi

    Hej,

    Använd nedan ges koden ... ...

  25. Suman
    23 december 2010 kl 14:12

    Riv Kod Det är verkligen bra att alla PHP-utvecklare.

  26. pruthvi
    23 december 2010 kl 09:48

    kan du förklara din kod som du vill ersätta @ mysql_query ($ query); med uttalanden u gav, men det visar ett felmeddelande $ message är odefinierad @ Andrew Fisk

  27. pruthvi
    23 december 2010 kl 09:31

    Samma problem med mig @ Andrew Fisk

  28. pruthvi
    23 december 2010 kl 09:30

    senaste utvecklingen koden kan känna av några rader i CSV-filen men inte visa det i tabellen

  29. pruthvi
    23 december 2010 kl 08:52

    koden är tillbaka ett uttalande om att det couldnt hitta csv-fil ...
    Wat kan vara problemet ....

  30. Andrew Fisk
    10 december, 2010 kl 15:28

    Okej, har hittat problemet. Jag hade mispelt tabellnamnet. Men hittade bara frågan när jag hade lagt till följande kod som returnerar ett fel om sql misslyckas. För närvarande skriptet inte berätta om det varit något problem.
    Så ändra raden
    @ Mysql_query ($ query);

    för alla följande: -

    $ Result = mysql_query ($ query);

    / / Kontrollera resultatet
    / / Detta visar den verkliga frågan skickas till MySQL, och felet. Användbart för felsökning.
    if (! $ result) {
    $ Message = 'Ogiltig fråga: ". mysql_error (). "\ N";
    $ Message .= "Hela frågan:". $ Query;
    die ($ meddelande)

    Hoppas det hjälper någon. Det gjorde jag.
    AJ

    @ Andrew Fisk

  31. Andrew Fisk
    9 december, 2010 kl 16:26

    När jag kör detta skript med en csv som jag vet import korrekt med hjälp av PHP Admin, körs skriptet, rapporterar rätt antal rader med meddelandet "Hittade totalt 193 poster i den här CSV-fil." Men ingen av de data visas i tabellen. Jag har gjort ändringar i CSV så att jag kan se om data tas i bordet och det är inte. Några idéer?
    AJ

  32. Craig
    8 december, 2010 kl 01:20

    Min CSV-importfilen har också citationstecken runt alla områden (främst för att undvika problem om jag vill importera till Excel så att den inte mangla data), så jag hade det här problemet där det var att sätta in poster med citationstecken kring uppgifterna. Jag klädde alla citationstecken genom att lägga till denna rad:

    $ Rad = str_replace ("\ "","",$ linje);

    efter denna rad:

    $ Rad = str_replace ("\ r ","",$ linje);

    och den nya linjen ersätter citationstecken med ingenting. Det är samma som linje innan det förutom att det är att ta bort \ "istället för \ r (citattecken i stället för vagnretur).

    @ Neady

  33. snigel
    1 december 2010 kl 17:29

    Ett stort litet program.

    Finns det något sätt att ersätta data i en cell till exempel. "Stad" i CSV och ändra den till ett värde från en föregående sida som en $ _SESSION eller $ _POST värde?

  34. Evan Islam
    30 november 2010 kl 17:23

    Detta är bra ... mycket lätt att genomföra. Nu måste lista ut hur man använder detta eller liknande skript för att ladda upp. Xls-fil tillsammans med. Csv-fil

  35. admin
    29 november 2010 kl 16:57

    @ Mike
    Kan du prova att lägga:
    set_time_limit (0);
    alldeles i början? (Direkt efter php öppningstaggen)

  36. mike
    18 november 2010 kl 21:48

    @ Exklusiv Tutorials
    Finns det något sätt att ha det ingen timeout? Det fungerar utmärkt med 100k poster, men när jag går till något stort som en mil eller mer, går ca 20 sek sedan går till tom skärm och annonser inga poster.? Tack.

  37. neady
    25 okt 2010 kl 18:21

    Efter att ha exakt samma fråga, kan någon hjälpa tack?

    Roy :
    Hej,
    Jag använder detta skript för att importera en CSV datafeed till mysql.
    Det enda problemet jag har är att citat "" också skall införas i mina tabeller
    Avgränsare:, (Komma)
    Bilaga: "(aanhalingsteken)
    Ny rad: \ r \ n

  38. Seelam Ravi Kumar
    19 Oktober 2010 kl 17:26

    Hej vänner,

    Jag behövde akut hjälp från er ... Så vänligen hjälpa mig här är koden ...

    Beredda HTML-filen. Men jag behöver PHP-lösning ... Vänligen hjälp för mig ... ... ..

    Skicka SMS

    Mottagare Mobilnummer:
    +91

    Telefonbok

    Ladda upp 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", "Ange mobilnummer");
    frmvalidator.addValidation ("frno", "num", "Mobilnummer fältet ska innehålla siffror");
    frmvalidator.addValidation ("frno", "minlength = 10000", "Mobil siffra vara 10.000 siffror");
    frmvalidator.addValidation ("message3", "req", "Ange SMS");

    Med vänliga hälsningar,
    Ravi Kumar

  39. Rashmi
    10 oktober 2010 kl 08:41

    <? Php
    $ Newbal = "0";
    omfatta "conn.php";
    if (isset ($ _POST ['submit']))
    {
    $ Filename = $ _POST ['filnamn'];
    $ Handtag = fopen ("$ filnamn", "r");
    medan (($ data = fgetcsv ($ handtag 1000,, ","))! == FALSE)
    {

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

    echo "$ data [0] exit";
    }
    }
    fclose ($ handtag);
    print "Importera gjort";

    }

    annat
    {
    ?>

    Skriv filnamnet att importera:

    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 ();
    ?>

    det fungerar bra på när jag laddar upp CSV-filen på localhost men visa fil saknas fel när den körs på server.please hjälpa mig, tack på förhand

  40. Online utbildning
    29 september 2010 kl 10:26

    Jag tror att detta är bäst för kundvagn är csv i SQL.

  41. susylu
    21 september 2010 kl 14:54

    kaundo le doy descarga mig aparecen muchos dragkedjor todos los Archivos los ubico en una sola carpeta? ¿

  42. bhanu
    19 september 2010 kl 22:44

    @ Zeshan

    användning explodera istället för split

  43. zeshan
    16 september 2010 kl 10:05

    Föråldrad: Function split () är föråldrat i E: \ wamp \ www \ floodpk2 \ admin \ simplecsvimport.php på rad 63
    Filen är inte skrivbar, kontrollera behörigheter. Hittade totalt 1498 poster i den här CSV-fil.

    plz hjälpa mig snarast

  44. Onlineapotek
    11 september 2010 kl 09:22

    8pills.com är din vård lösning. 8pills.com ger bäst i klassen Generic och märkesvaror läkemedel.

  45. Oram
    10 september 2010 kl 01:17

    jag står inför meddelande under-

    Meddelande: Undefined offset: 1 i C: \ wamp \ www \ Ny mapp (2) \ exl8.php på rad 20

    Meddelande: Undefined offset: 2 i C: \ wamp \ www \ Ny mapp (2) \ exl8.php på rad 20

    Meddelande: Undefined offset: 2 i C: \ wamp \ www \ Ny mapp (2) \ exl8.php på rad 20

  46. Matt
    8 september 2010 kl 23:18

    Detta fungerar mycket bra. Tack!

  47. Roy
    20 augusti 2010 kl 12:02

    Här är koden btw,

    $ DatabaseHost = "localhost";
    $ Databasename = "databas";
    $ Databasetable = "bord";
    $ Databaseusername = "admin";
    $ Databasepassword = "admin";
    $ Fieldseparator = "";
    $ Lineseparator = "\ n";
    $ Csvfile = "http://linktosite/";
    $ Addauto = 0;
    $ Spara = 0;
    $ Utdatafil = "output.sql", / / ​​om spara är på (1)
    $ File = fopen ($ csvfile, "rb");
    $ Csvcontent = stream_get_contents ($ fil);

    fclose ($ fil);

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

    $ Lines = 0;
    $ Förfrågningar = "";
    $ Linearray = array ();
    foreach (split ($ lineseparator, $ csvcontent) som $ rad) {

    $ Rader + +;

    $ Rad = trim ($ line, "\ t");

    $ Rad = str_replace ("\ r ","",$ linje);

    /************************************
    Denna linje försvinner den speciella karaktär. ta bort det om poster redan flytt i CSV-filen
    ************************************/
    $ Rad = str_replace ("'"," \ '", $ line);
    /*************************************/

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

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

    if ($ addauto)
    $ Query = "INSERT INTO $ databasetable värden (",'$ linemysql');";
    annat
    $ Query = "INSERT INTO $ databasetable värden (" $ linemysql');";

    $ Frågor .= $ query. "\ N";

    @ Mysql_query ($ query);
    }

    @ Mysql_close ($ con);

    if ($ spara) {

    if (! is_writable ($ utdatafil)) {
    echo "Filen är inte skrivbar, behörigheter kontrollera. \ n";
    }

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

    if (! $ fil2) {
    echo "Fel vid skrivning till utfil \ n."
    }
    else {
    fwrite ($ fil2, $ frågor);
    fclose ($ fil2);
    }
    }

    }

    echo "Hittade totalt $ linjer poster i den här CSV-fil. la till DB \ n ".

  48. Roy
    20 augusti 2010 kl 12:00

    Hej,

    Jag använder detta skript för att importera en CSV datafeed till mysql.
    Det enda problemet jag har är att citat "" också skall införas i mina tabeller
    Avgränsare:, (Komma)
    Bilaga: "(aanhalingsteken)
    Ny rad: \ r \ n

  49. Radikale
    Augusti 18, 2010 kl 18:35

    Nice Work!

    Jag bara har en fråga.

    Är det möjligt att använda fler tecken på explodera kommandot i manus?
    Jag behöver allso att det finns en separation med en. och;

    Tack så mycket om någon kropp har någon aning om!

  50. Vinita
    17 Augusti, 2010 kl 06:49

    Jag använder denna kod ... ... ... Det är för enkelt att genomföra det i min sida ... ..
    Tack så mycket ..

    Jag vill ha lite mer kod för PHP ... ...
    Att konvertera sidan i pdf ...

  51. Haan
    7 augusti, 2010 kl 05:11

    Hej,
    Får detta fel. hur man ska lösa detta?

    Fel:
    Filen är inte skrivbar, kontrollera behörigheter. Hittade totalt 13 poster i den här CSV-fil.

    Tack
    Haan

  52. Darwin
    23 juli 2010 kl 01:23

    Hmm .. Jag fick fel som dessa "Filen är inte skrivbar, kontrollera behörigheter. Hittade totalt 2 poster i den här CSV-fil. "Någon aning om vad som gick fel?

  53. Darwin
    23 juli 2010 kl 01:21

    Hmm .. Jag fick fel som dessa "Filen är inte skrivbar, kontrollera behörigheter. Hittade totalt 2 poster i den här CSV-fil. "Någon aning om vad som gick fel?

  54. Pollux
    24 Juni 2010 kl 10:28

    Att hoppa över den första raden / raden som är en rubrik i CSV-fil så här:
    ... ..
    if ($ rader> 1) {

    if ($ addauto)
    $ Query = "INSERT INTO $ databasetable värden (",'$ linemysql');";
    annat
    $ Query = "INSERT INTO $ databasetable värden (" $ linemysql');";

    $ Frågor .= $ query. "\ N";
    @ Mysql_query ($ query);
    }

  55. Newbie
    14 juni, 2010 kl 21:41

    Jag hade det här skriptet körs bra under en annan domän. Sen när jag flyttade den, tar bort cron jobb nedladdningar CSV-filen, lagrar den, och då men icke ladda upp den till MySQL. När jag tittar på import.php filen och försök att verkställa Jag får felmeddelandet säger kan inte hitta filen att du har rätt sökväg. Hjälp.

  56. Gio
    5 jun 2010 kl 14:55

    Om du vill undvika att föra in första raden, bara spela med disken, till exempel:

    $ Lines = 1, (Värdet för räknaren är 1)
    $ Förfrågningar = "";
    $ Linearray = array ();

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

    $ Rader + +; (Tilldelar den första raden # 2 (header)

    if ($ linjer> = 3) {(Start på # 3 "något högre eller lika med 3")

  57. Coulton
    5 jun 2010 kl 09:55

    Underbart manus men jag har återkommande problem.
    Efter att jag kör skriptet, det står "Hittade totalt 1 poster i detta CSV-fil.".
    Jag tittade tillbaka i min tabell och det visar en tom.
    Jag kollade att se till att det var rätt antal kolumner och det fanns.
    Snälla hjälp!

    Tack,
    Coulton

  58. Saman
    3 juni 2010 kl 01:10

    Om jag begränsad tillgång till kundens hårddisk hur ska jag ladda upp CSV-filen till server.for exempel kan vi sätta standardvärdet till filöverföringskontrollen

  59. Alejandro
    11 maj, 2010 kl 04:03

    Detta var väldigt nyttigt för mig ... men jag behövde för att göra en ändring för att läsa i stora filer. Jag var förvirrad i början, men sedan insåg skriptet läser in hela filen i minnet (rätt?). Så här är en anpassad version av koden, som läser rader i en i taget. det står i filer som ser ut som
    börjar fil:
    2,3, -1
    1, -2,4
    slutet filen (med många fler värden). Jag ville att varje rad som skall ett bord inträde och ett ID med radnummer, liksom den första id som representerar storleken på bordet (som inte kommer att ändras senare).

    <? Php

    /********************************/
    / * Kod vid http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
    / * Redigera uppgifterna nedan för att avspegla lämpliga värden
    /********************************/
    $ DatabaseHost = "localhost";
    $ Databasename = "Tomoku";

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

    / / Den här koden läser tatami-filer i databasen

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

    / / Detta loopar över en massa filer
    för ($ r = 2, $ R <14, $ r + +) {
    för ($ c = $ r, $ c

  60. Ap.Muthu
    28 april 2010 kl 06:02

    Följande gjorde susen för mig:
    LOAD DATA LOCAL LOW_PRIORITY INFILE
    "C: \ \ Documents and Settings \ \ Administratör \ \ Desktop \ \ SigmaS1.csv"
    In i tabellen "mydb`. "Mintabell"
    FÄLT undkom genom \ \
    Upphävts genom beslut ","
    VALFRITT omges av '"'
    LINES upphävts genom "\ r \ n '
    ("Användare", "pwd", "sno", "amt", "ActiveRec");

  61. fred
    20 apr 2010 kl 11:22

    Skriptet läser en extra linje från csv-fil. t.ex. om csv-filer har 25 poster Det visar finns det 26 poster. Kan du säga mig var jag gjort för fel?

    Jag har lagt till för att kontrollera om det är ett första linje och fortsätta slinga om dess första linje.

    tack

  62. Carl
    18 apr 2010 kl 11:00

    Liksom Gary, jag vill kunna skriva över en befintlig post, men genom att uppdatera den, inte att ta bort alla data i db. Sp här någonstans:

    if ($ addauto)
    $ Query = "INSERT INTO $ databasetable värden (",'$ linemysql');";
    annat
    $ Query = "INSERT INTO $ databasetable värden (" $ linemysql');";

    Hur skulle jag se om posten finns och uppdatera sedan i stället in?

  63. fred
    13 apr 2010 kl 10:52

    Hur hoppar jag på första raden / raden som är en rubrik i CSV-filen och infoga resten av data till db?

  64. admin
    Mars 16, 2010 klockan 12:30

    @ Gary
    Du kan använda ett @ mysql_query ("trunkera $ databasetable"); höger efter @ mysql_select_db uttalande.
    Men var försiktig eftersom denna åtgärd kommer att utplåna data och är inte reversibel.

  65. admin
    16 Mars, 2010 kl 12:28

    @ Kish
    den aktuella koden tillåter inte surfar för / uppladdning av filen.
    Du kan helt enkelt sätta CSV-filen i samma katalog som PHP-skript, och helt enkelt ställa in $ csvfile variabeln vara lika med ett filnamn (utan sökväg)

  66. Jeremie
    9 mars 2010 kl 12:39

    Hej alla,

    Hur innehålla jag dessa csv citat i "den dag, månad datum 2010" och staten "prov, ange" till en kolumn i min databas? Jag ser många exempel men jag kan inte få det att fungera. någon hjälp skulle bra.

    AK, 10037591,1, "Tisdag 9 mars 2010 15:55:16", 59,7151, -151.4434,2.7,75.90,32, "Kenai Peninsula, Alaska"
    thx

  67. DATA_TYPE
    5 Mars 2010 kl 12:03
  68. Gary
    2 mars 2010 kl 11:26

    Tack, har denna kod hjälpte verkligen!

    Hur skulle jag ändra det så att ett formulär ska visas där användaren bläddrar och väljer CSV-filen som ska importeras till bordet?

    Och även hur kunde jag göra det så att varje gång en ny fil läggs fram den skulle åsidosätta vad som för närvarande lagras i tabellen?

    Många tack

  69. Kish
    17 feb 2010 kl 14:31

    Detta är mycket användbart kod för mig ..
    tack.

    Hur kan jag få bläddra filen i stället för att skriva hela sökvägen ..

    Snälla hjälp med detta.

    tack

  70. rajdeo
    4 feb 2010 kl 07:21

    Jag klarade inte av det hur det fungerar från en fil kontroll. innebär bläddra först och välja en fil och sedan skicka där jag behöver ändras

  71. Mark Camp
    11 januari 2010 kl 00:10

    Hej,

    Gjort vissa ändringar. . Min txt-fil har 3 kolumner separerade med "|" (pipe) karaktär. Skriptet visar fildata räknar rader, men inte kommer in i data i databasen. Några kommentarer?

    $ Csvcontent = fread ($ file, $ storlek);

    fclose ($ fil);

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

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

    $ Lines = 0;
    $ Förfrågningar = "";
    $ Linearray = array ();

    $ Count = 0;

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

    $ Count = $ count + 1;

    $ Rader + +;

    $ Rad = trim ($ line, "\ t");

    $ Rad = str_replace ("\ r ","",$ linje);

    /************************************
    Denna linje försvinner den speciella karaktär. ta bort det om poster redan flytt i CSV-filen
    ************************************/
    $ Rad = str_replace ("'"," \ '", $ line);
    /*************************************/

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

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

    if ($ addauto)

    $ Query = "INSERT INTO INDIKATORER värden (" $ count "," $ linemysql');";

    annat

    $ Query = "INSERT INTO INDIKATORER värden (" $ linemysql');";

    $ Frågor .= $ query. "\ N";

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

    echo "$ linemysql \ n";
    }

  72. Mark Cloyd
    3 jan 2010 kl 19:33

    Utmärkt manus! Jag behövde lite skjuts till ett projekt jag arbetar med och detta gjorde susen.

    Jag märkte något konstigt men jag ändrade skriptet att arbeta med ett formulär och jag märkte att för att söka, var det sista området att få buggered upp eftersom den nya linjen röding (antingen \ r \ n eller båda) var fortfarande spelas in i MySQL-databas.

    För detta ändamål om du ersätter:
    $ Rad = str_replace ("\ r ","",$ linje);

    med:
    $ Rad = str_replace ("\ r',",$ linje);

    det kommer att hålla tillbaka från att vara ett problem, som för den nya linjen har jag lagt till en liten sak som gör det möjligt för att infoga nya poster, men uppdateringar befintliga poster, så att du inte slutar upp med dubbla poster. På toppen av koden nedan ser du där jag gjorde samma fix för den faktiska nya linjen röding.

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

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

    if ($ addauto) {

    switch ($ databasetable) {

    fall ("Adress"):

    $ Duplicatevals = "adress = värden (adress),
    stad = värden (stad), stat = värden (staten),

    zip = värden (zip) ";

    break;

    fall ("ägare"):

    $ Duplicatevals = "ownername = värden (ownername),
    Hustyp = värden (Hustyp),

    addresskey = värden (addresskey) ";

    break;

    }

    $ Query = "INSERT INTO $ databasetable värden (",'$ newlinemysql)

    För dubblerat Key Update

    $ Duplicatevals ";

    } Else {

    $ Query = "INSERT INTO $ databasetable värden (" $ linemysql)

    För dubblerat Key Update

    $ Duplicatevals ";

    }

    Även i min form jag lagt i tabellen namn och om jag ville den tabell som ska [boolean] "addauto" eller inte som en enda ingång från en drop-down (kommaseparerad), sedan dela upp resultatet på toppen av simplecsvimport skript.

    Slutligen måste du komma ihåg att ställa index i databasen för "ON DUPLICATE ..." för att arbeta, kommer auto inkrement inte fungera i detta fall, så du måste ställa in en andra index på borden auto inkrement, de tabeller som don 't auto inkrement och har unika områden arbetar med den inre index om detta är den väg du vill gå.

    Jag hoppas att detta hjälper någon!

    Skål!

  73. phpwebdesigner2010
    December 8, 2009 kl 21:39

    Jag måste ladda ner data automatiskt från en fjärrserver. Det är en CSV-fil, och jag måste packa upp den, och lagrar data i en MySQL-databas som jag skapat. Det finns flera databaser. Den första delen är under en av de databaser som någon hjälpte mig med och det fungerar underbart. Jag har ställt in ett cron-jobb och det hämtar det automatiskt som planerat. Men jag har flera databaser och skränande få den andra att arbeta.

    DETTA avsnitt nedan fungerar bra!!
    --------------------------

    #! / Bin / bash

    deleteparam = '-delete-after ";
    # Deleteparam = "
    # Directory = '-katalog-prefix = / $ HOME / myfolder / myfolder / "
    katalog = "
    # Userpwd = '-http-user = bla-http-password = blah'

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

    # If [-z "$ 1"]; sedan
    # Echo Användning: $ 0 tabell
    #exit
    # Fi

    ZIP = namn på datafil i fjärrservern
    ZIP = "toUpper $ ZIP"

    # Filen i zip har ett mindre _
    DATA = namnet på den tabell i min mysql databas
    DATA = "toUpper $ data"

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

    cd / $ HOME / myfolder / myfolder /
    ####### Få bostäder

    wget " http://3pv.mlslirealtor.com/Data3pv/DownloadBRSaction.asp?user_code=XXXXXX&password=XXXXXXX&data_type=datazip "-O $ ZIP.csv.zip
    sova 10
    ####### Packa upp den
    pwd
    ls-la

    unzip-o $ ZIP.csv.zip
    sova 10
    ####### Ladda det

    wget-verbose $ deleteparam $ katalog $ userpwd http://mywebsite/myfolder/import.php?table = $ data
    sömn 300

    ###### Radera filer

    rm $ ZIP.csv.zip
    rm $ DATA.csv
    sova 10
    _ ---------------------------
    Allt detta ovan fungerar UNDERBAR

    Detta är vad jag BEHÖVER HJÄLP MED
    --------------------------
    1. Jag behöver ett skript för att lägga till ovanstående fil som kommer att ladda ner bilder. Om du ser nedan jag behöver ett skript som automatiskt blir dagens datum och tid att skriptet är sprang. Det serverns pic från de senaste 7 dagarna och den uppdateras ständigt. När skriptet har körde det kommer att ladda ner data i den tabell som jag skapat.

    2. Sedan måste jag ett skript som frågar mysql databas söker för inlägg som bilder och sedan hämta den faktiska foton direkt från sina fjärrservrar. Detta csv-fil inte ladda ner bilder, bara data som jag kan använda för att köra ett skript för att hämta bilder på en viss plats. Se nedan.
    Nedan visas de instruktioner jag fått.

    INSTRUKTIONER
    Foto data hämtas av HTTP. Fotona data uppdateras en gång dagligen och finns tillgänglig för nedladdning som en CSV-fil. Du kan sedan skriva ett manus med hjälp av data från en CSV-fil att peka tillbaka till bilderna på vår image server. Du måste ange ett värde för frågesträngfilter last_updt> "ÅÅÅÅMMDD HH: MM: SS" för webbadressen för att returnera data. Fältet last_updt är datumet värde för sista gången som ett foto var den noteringen.

    Du kommer att behöva ersätta user_code och lösenord platshållare (XXXX) med inloggningsuppgifter som du.

    Steg 1: Du kan hämta primärnotering fotodata CSV-fil att gå till webbadressen nedan.

    http://remotewebserver/Data3pv/DownloadBRSaction.asp?user_code=XXX&password=XXXX&query_str=last_updt% 20>% 20'YYYYMMDD% 20HH: MM: SS '& DATA_TYPE = BILDER

    Steg 2: De bilder tabelldata bör hämta i en CSV-format.

    Steg 3: Använda Y flaggor och ML nummer i de uppgifter du kan länka tillbaka till vår bild platser.

    Vår primära bild sökvägen är följande:

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

    Till exempel-Det primära foto för notering nummer 1899430 finns på

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

    Vår extra bild sökvägen struktur är följande:

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

    Till exempel-Det andra fotot för notering nummer 1899430 finns på

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

  74. Nathan
    20 Oktober 2009 kl 05:59

    Hej, säger det mig skivan räkna men inte sätta in data i databasen

    Hoppas du kan hjälpa

    Nathan

  75. admin
    8 oktober 2009 kl 16:48

    kommandot är: trunkera TableName.

    Du kan infoga följande på rad 58:
    @ Mysql_query ("trunkera $ databasetable");

    men detta är icke reversibel! så var försiktig

  76. MAFF
    7 oktober 2009 kl 07:24

    Hur kan jag tömma min redan fyllda bord innan du sätter den nya filen?
    eller kan jag uppdatera en redan befintlig ingång?

    Trunkera, UPDATE? Hur får jag detta i frågan?

  77. admin
    5 okt 2009 kl 08:46

    @ Andy Brotherton : Detta innebär att frågan försöker infoga en post med ett antal kolumner som inte matchar databastabell.

    1) Är du säker på att CSV-filen har exakt samma antal kolumner som tabellen i databasen?
    2) Är fältseparator i detta CSV-filen verkligen ett kommatecken? eller är det en flik till exempel eller andra? Om det inte ett kommatecken, ändra värdet på $ fieldseparator på linje 12
    3) Tabellen måste redan skapats i databasen innan du försöker läsa in data i den. Är du säker på att du har det?

  78. Andy Brotherton
    4 okt 2009 kl 14:14

    Hej,

    Jag skulle verkligen vilja använda detta script men jag är inte säker på vad jag gör fel. Jag får samma problem som nämns ovan med uppgifter som inte fylls på i den db. Den hittar rätt antal rader men visar inget i db.

    Jag bytte linje 88 @ mysql_query ($ query) or die (mysql_error ());

    och får detta meddelande "Kolumn räkna inte matchar värde räknat på rad 1"

  79. admin
    3 okt 2009 kl 18:02

    @ Claus
    Hej Claus.
    Har CSV verkligen innehåller en enda post?

    Eftersom skriptet nått det stadium där det skriver ut antalet poster, antar jag inte misslyckades när den är ansluten till databasen (linjer 56-57) så det är inte problemet.

    Det är möjligt att frågan för att infoga data misslyckas.
    Försöka ersätta linje 88 med:
    mysql_query ($ query) or die (mysql_error ());

    och kolla vad fel du får.

  80. admin
    3 okt 2009 kl 17:58

    @ Okoth
    Hej Okoth.

    Troligtvis kan du bli av med linjerna 33-54 och ersätta dem med denna enda rad:

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

    ersätta prickar med rätt webbadress (direkta webbadressen till den CSV-fil)

  81. admin
    3 okt 2009 kl 17:54

    @ Adrian
    Hej Adrian.
    Drupal, som du noterade, har komplex tabell strukturer. Beroende på vilken typ av data som du importerar, är det mycket troligt att dessa uppgifter måste delas upp i flera tabeller, oftast med en gemensam utrikes-nyckel som Nod-ID.
    Tyvärr skulle skriptet ovan hjälper inte det.

  82. Okoth
    18 september, 2009 kl 20:16

    Tack för skriptet. Mycket förståeligt.

    Hur kan jag ändra detta skript så att den hämtar och lagrar en CSV-fil från Internet i MySQL?

  83. Adrian
    13 september 2009 kl 19:03

    Hej Alla
    Jag använder Drupal för att bygga en ny webbplats, är utmaningen jag har just nu som jag behöver för att importera data från en CSV-fil till en MySQL-databas som har delat bord, därför några av de fält där Jag vill importera CSV-data befinner sig i olika delar av samma databas kommer det här skriptet fungerar för mig? Om inte kan detta CSV-fil kan importeras med en annan metod?

    Vänligen meddela, tack för all hjälp.

    Hälsningar
    Adrian

  84. Claus
    11 september 2009 kl 12:59

    Hej alla!

    Verkar ha skriptet fungerar ... exept att den inte skriva data till MySQL ...
    Precis som med Chris: skriptet har körts, och även utgångar posten räkna, men inte röra databasen alls ... men säger mig: Hittade totalt 1 poster i den här CSV-fil.

    Vad gör jag fel (im en noob på PHP och MySQL)

    Tack
    Claus

  85. admin
    26 augusti 2009 kl 03:20

    Hej Stanley, är problemet med enkla citationstecken. Bloggen programvara överskrivningar höra dem. Byt bara ut "och" med "

    PS: ovanstående kommando är att direkt ladda en CSV-fil i databasen från MySQL-prompten. Detta är trevligt men inte i samband med skriptet ovan :)

  86. Stanley Zdun
    24 Augusti, 2009 kl 18:19

    det står att läsa denna in i databasen

    läsa in data lokal infil 'PATH' i tabellen tabellfält avslutas av "," rader avslutas med '\ n';

    Jag ändra sökvägen och tabellen dess gå in men det ger mig ett felmeddelande om att dess fel syntax kod 1064

    kan någon ge mig några råd om vad man ska göra

    tack
    Stan

  87. Gary Pearman
    23 februari, 2009 kl 07:25

    När det gäller citaten frågan, kan du använda just detta:

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

    Skål,
    Gaz.

  88. admin
    18 december 2008 kl 17:35

    Kära Chris,

    vänligen byt:
    @ Mysql_query ($ query);
    med:
    @ Mysql_query ($ query) or die (mysql_error ());

    och låt mig veta vad felet det ger dig

  89. Chris
    18 december 2008 kl 14:31

    Hej Alla,

    Älskar det här manuset, och det fungerade bra, nu plötsligt skriptet brukar infoga poster. Skriptet har körts, och även utgångar posten räkna, men inte röra databasen alls ...

    Några idéer?

    Tack
    C

  90. admin
    1 december, 2008 kl 14:10

    Hej Mark,

    Först är det med hänvisning till den fil du valt i $ utdatafil variabel.
    andra, måste denna fil vara skrivbar. Jag antar att du använder Linux, inte Windows, eftersom detta i allmänhet inte ett problem i Windows.
    På Linux, bara SSH till maskinen, byt till katalogen där utdatafilen är och skriv: chmod 777 filnamn
    där "filnamn" är själva filnamnet.
    Om du inte har SSH, många FTP-klienter ändra stöd tillstånd. För detta ändamål, FTP till mappen som innehåller utdatafilen, välj denna fil, och lokalisera från denna FTP-program möjlighet att ändra tillstånd. Ställ in den till 777, eller "läsa, skriva," för alla.

  91. MarkFromHawaii
    19 November, 2008 klockan 04:00

    Hej alla,

    Tack för skriptet. Jag är en noob på PHP och MySQL så jag uppskattar verkligen något sånt här. Jag kom så långt som genererar "Filen är inte skrivbar, kontrollera rättigheterna" visas i min webbläsare. Kan någon förklara kommentaren om fastställande av tillstånd till 777? Jag använder en Excel-genereras. Csv-fil? Tack på förhand.

  92. gen
    29 okt 2008 kl 09:28

    Jag kan bara få den första raden i min CSV-fil som ska importeras till databasen.
    Här är en kopia av loggfilen:

    infoga i produktion värden (", '2008-10-21", 50 ", 50", 50 "," detta är den första tonerna linje "," det här är anteckningar linje 2 "," det här är anteckningar linje 3 "0000-00-00 ', '0000-00-00', '0000-00-00 ', '456 Morningside Ave', 'Ste. 512", "Brooklyn", "NY", '10023', "Joe", "Kund 1 ');
    infoga i produktion värden (", '2008-10-09 ', '50', '50 ', '50', 'detta är den första tonerna raden',",",' 2008/10/09", '2008 . -10-14 ', '0000-00-00', '456 Morningside Ave "," ste 512 "," Brooklyn "," NY ", '10023 ',' Joe", "Kund 1 ');
    infoga i produktion värden (", '2008-10-14", 25 ", 25", "25", "ANMÄRKNINGAR 1',",",' 2008/10/14", '2008-10 till 17 "," NULL ", 555 någonstans", "svit 123", "New York", "nya y", '10001 ',' Joe "," Namn 1 ");
    infoga i produktion värden (", '2008-10-16 ', 45', 45 ', 45',",",",' 2008/10/16", '2008-10-24 "," NULL',",",",",",' Tom',");
    infoga i produktion värden (", '2008-10-01", "34", "34", "34',",",",' 2008/10/02", '2008-10-04 ',' 2008/10/04',",",",",",' Steve',");
    infoga i produktion värden (", '2008-10-17 ', '50', '50 ', '50', 'detta är den första tonerna raden',",",' 2008/10/03", 0000 . -00-00 ', '0000-00-00', '456 Morningside Ave "," ste 512 "," Brooklyn "," NY ", '10023 ',' Joe", "Kund 1 ');
    infoga i produktion värden (", '2008-10-18", 25 ", 25", "25", "ANMÄRKNINGAR 1',",",' 2008/10/04", 0000-0-00 "0000-00-00 ', '555 någonstans", "svit 123", "New York", "nya y", '10001', 'Joe "," Namn 1 ");
    infoga i produktion värden (", '2008-10-19", "45", "45", "45',",",",' 2008/10/05", 0000-00-00 ',' 0000-00-00',",",",",",' Tom',");
    infoga i produktion värden (", '2008-10-20", "34", "34", "34", "nya sedlar',",",' 2008/10/06", 0000-0-00 "0000-00-00',",",",",",' Steve',");
    infoga i produktion värden (", '2008-10-21", "12", "12", "12", "ännu nyare anteckningar',",",' 2008/10/07", 0000-00- 00 ', '0000-00 till 00',",",",",",' märke',");
    infoga i produktion värden (", '2008-10-22 ', '1', '0 ', '0',",",",' 2008/10/08", 0000-00-00', ' 0000-00-00',",",",",",",");
    infoga i produktion värden (", '2008-10-23 ', '2', '0 ', '0',",",",' 2008/10/09", 0000-00-00', ' 0000-00-00',",",",",",",");
    infoga i produktion värden (", '2008-10-24", "3", "0", "0',",",",' 2008/10/10", 0000-00-00 ',' 0000-00-00',",",",",",",");
    infoga i produktion värden (", '2008-10-15", "0", "0", "0", "senare',",",' 2008/10/11", 0000-00-00 ' , 0000-00-00',",",",",",",");
    infoga i produktion värden (", '2008-10-16 ', '0', '0 ', '0', 'senare fortfarande',",",' 2008/10/12", 0000-0-00 "0000-00-00',",",",",",",");
    infoga i produktion värden (", '2008-10-17 ', '0', '0 ', '0', 'senare fortfarande',",",' 2008/10/13", 0000-0-00 "0000-00-00',",",",",",");
    infoga i produktion värden (", '2008-10-18", "0", "0", "0", "senare fortfarande',",",' 2008/10/14", 0000-0-00 "0000-00-00',",",",",",");
    infoga i produktion värden (", '2008-10-19 ', '0', '0 ', '0', 'senaste',",",' 0000-00-00", 0000-00-00' , 0000-00-00',",",",",",");
    infoga i produktion värden (", '2008-10-01", "34", "34", "34", "allra senaste',",",' 2008/10/02", '2008-10 till 04 ", '2008-10 till 04',",",",",",' Bruce ');
    infoga i produktion (","); värden

    Det säger att det är in 20 poster, men bara den första gör den i databasen. Alla tankar?

  93. enim
    23 okt 2008 kl 04:16

    det gjorde inte in i databasen bordet där jag vill att det skall införas ..: (

  94. inloggning
    20 Oktober, 2008 kl 18:10

    Nice arbete chef ;-)

  95. Fidel Gonzo
    10 oktober 2008 kl 05:12

    Hej alla,

    Jag gjorde en liten ändring i koden, så det fungerar som en CSV-importör, som det ska.

    CSV-s första raden bör hålla kolumnnamnen du vill importera, så ändrar foreach loop:
    foreach (split ($ lineseparator, $ csvcontent) som $ rad) {

    $ Rader + +;

    $ Rad = trim ($ line, "\ t");

    $ Rad = str_replace ("\ r ","",$ linje);

    / * Få kolumnnamn från första raden i CSV * /
    if ($ linjer == 1) {
    $ Columns = explodera ($ fieldseparator, $ line);

    $ Columnsql = implodera (",",$ kolumner);

    echo $ columnsql;
    fortsätta;
    }

    /************************************
    Denna linje försvinner den speciella karaktär. ta bort det om poster redan flytt i CSV-filen
    ************************************/
    $ Rad = str_replace ("'"," \ '", $ line);
    /*************************************/

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

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

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

    $ Frågor .= $ query. "\ N";

    @ Mysql_query ($ query);
    }

  96. admin
    6 okt 2008 kl 00:27

    Hur stor är filen du försöker importera?
    i alla fall prova att lägga till följande rad efter den första öppningen taggar:
    set_time_limit (300);
    Detta kommer att ge manuset upp till 5 minuter (300 sekunder) av genomförandetid.
    Byta 300 med 0 gör det möjligt att ta så mycket tid som behövs.

  97. Phillip
    1 oktober, 2008 kl 22:26

    Hej där, trevligt manus tack. När du kör den jag får:
    Fatal error: maximitid för genomförandet av 30 sekunder överskridits på rad 63

    Finns det något jag kan göra för att komma runt detta?

  98. Roelof
    30 September 2008 kl 08:06

    Robbie, tack för att du dessutom är det ganska välkommet. Tyvärr fungerar det inte direkt när jag kopierar den. Jag tror att något saknas eftersom koden är utspridd på två tjänster.

    Kan du kontrollera koden som visas här? Är det något som saknas?

  99. ASCASC
    27 September 2008 kl 05:04

    Brad, om du hade laddat ner det tidigare än förra veckan, ersätta "<?" överst med "<? php (ta bort mellanslag)

  100. Brad
    26 september 2008 kl 14:43

    Jag får först så mycket av det avskurna och resten bara koden i min webbläsare. Jag vet php fungerar eftersom resten av sidan fungerar.
    Jag gjorde uppgradera till php5 spelar det för roll?

  101. Robbie
    24 sep 2008 kl 14:27

    )
    , / / ​​Hoppa eftersom den omfattas av de dåliga arrayelementen
    annat
    $ Newarray [$ y] = str_replace ('"',",$ linearray [$ y]);
    $ Linearray = array_values ​​($ newarray), / / ​​reset nycklarna till den nya arrayen
    $ X + +;
    }
    }
    }

  102. Robbie
    24 sep 2008 kl 14:27

    Tja, här är fixa till min tidigare kommentar:

    detta förs in i mellan:

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

    ... Infoga kodsträngen nedan ....

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

    Hittar och håller alla "grejer, mer saker" tillsammans innan imploderar den.

    $ A = "";
    $ B = "";
    $ Qoutecount = 0;
    for ($ x = 0; $ x -1) {
    $ Qoutecount + +;
    if ($ qoutecount == 1)
    $ A = $ x, / / ​​lagra i första hand
    elseif ($ qoutecount == 2) {
    $ Quotecount = 0;
    $ B = $ x, / / ​​lagra andra instans
    / / FRÄCKHET ... sammanställa alla element från $ a till $ b till $ a och ignorera delar någonting efter $ a till $ b i nya kedjan;
    $ Newa = ""; / / initiera nya strängen.
    för ($ z = $ a, $ z $ a & & $ y

  103. Robbie
    24 sep 2008 kl 12:19

    Tar inte hänsyn till områden som den här raden:
    Fname, Lname, "Company, Inc", stad, stat, Zip

    Företag och Inc få uppdelad i två olika kolumner.

  104. Steve
    12 sep 2008 kl 12:19

    Rengaraj,
    CSV-filen ska vara på samma plats som den PHP-fil.
    Dessutom behöver du inte verkligen måste använda samma namn csv-fil.
    bbqrest.csv är ett exempel, ersätta detta filnamn med din egen.

  105. Rengaraj
    12 sep 2008 kl 12:16

    Kan någon svara snabbt Jag har en bbqrest.csv CSV-fil på rätta vägen (root) ..

  106. Rengaraj
    12 sep 2008 kl 12:11

    Jag får det här felet Filen kan inte hittas. Se till att du angett rätt sökväg.

  107. ollyd
    9 september 2008 kl 06:35

    det skulle vara en bra idé att lägga förhindra rubriker i CSV från att lämnas in i databasen. Eller för att skapa ett manus som drar ut den första raden och skapar en db använder dessa värden som kolumnnamn.

  108. Joseph
    3 september, 2008 kl 12:39

    Steve,

    Du skulle placera det här skriptet i en webb-tillgänglig mapp, efter att ha bytt variabler som behöver ändras. Läs kommentarerna i skriptet för att ta reda på vad du behöver ange. Sedan kallar manuset upp i en webbläsare, som:

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

  109. steve
    31 aug 2008 kl 19:04

    Total nybörjare - att slita mitt hår ut försöker importera Excel csv till phpMyAdmin (på Mac). Skulle gärna vilja veta exakt var och vad jag gör med denna php script ...?

  110. dani
    25 augusti, 2008 kl 20:06

    Wow är cool ... hade idé efter läst din kodning ... tackar mycket

  111. »CSV-import
    7 juni, 2008 kl 10:29
  112. Importera en kommaseparerad fil i MySQL med ett PHP-skript | e-handel och SEO
    30 november 2007 kl 11:59
  113. hfvd
    Oktober 24, 2007 kl 12:44

    Hej där, en liten ändring för automatisk uppräkning värdena i kolumn 1 (ID-fältet)

    se variabel $ räknas.

    ola, Enrico.

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

    $ Lines = 0;
    $ Förfrågningar = "";
    $ Linearray = array ();

    $ Count = 0;

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

    $ Count = $ count + 1;

    $ Rader + +;

    $ Rad = trim ($ line, "\ t");

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

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

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

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

    $ Frågor .= $ query. "\ N";

    @ Mysql_query ($ query);
    }

    / / @ Mysql_close ($ con);

  114. »Konvertera csv till SQL med PHP @ The Coding Pad: Programmering blogg, diskussioner, handledning, resurser
    September 24, 2007 kl 14:12
  115. Len Lulow
    28 februari 2007 kl 20:11

    Tack så mycket detta sparat massor av tid! Nice skript.

  116. S. Martinez
    22 februari, 2007 kl 12:17

    Jag brukar använda phpmyadmin, men sant, ifall man inte har det installerat, och inte har tillgång skal (som de flesta av de webbhostarna), kan detta komma väl till pass.

  117. Jake
    25 feb 2007 kl 06:31

    Mycket användbart, tack.