script PHP para importar dados csv para mysql

19 fevereiro de 2007

Este é um script simples que vai permitir a você importar dados csv para o seu banco de dados. Isso se torna útil porque você pode simplesmente editar os campos apropriados, enviá-lo juntamente com o arquivo CSV e chamá-lo a partir da web e ele fará o resto.

Ele permite que você especifique o delimitador deste arquivo csv, se é um coma, um guia, etc Ele também permite que você escolheu a linha separadora, permite salvar a saída para um arquivo (conhecido como um despejo de dados SQL).

Ele também permite que você inclua um campo vazio no início de cada linha, que normalmente é um inteiro auto incremento chave primária.

Esse script é útil principalmente se você não tem o phpmyadmin, ou você não quer o incômodo de fazer o login e preferem uma solução apenas alguns cliques, ou você simplesmente é um cara do prompt de comando.
Apenas certifique-se a tabela já está criada, antes de tentar descarregar os dados.
Por favor, postar seus comentários, se você tem algum bug.

Baixe o arquivo aqui

Tags:
  1. Sistema da roleta
    24 de maio de 2011 às 20:09

    Obrigado pela informação

  2. Trabalho e análise de arquivos de texto CSV & PHP
    Maio 15, 2011 às 17:52
    # 2
  3. Joln
    11 de maio, 2011 às 07:52

    Grande script! Tnx um lote

  4. Texas CNA Classes
    11 de maio, 2011 às 07:10

    Eu não tenho qualquer palavra para apreciar este post ... .. Realmente estou impressionado deste post .... A pessoa que criar este post foi um grande homem .. obrigado por esta compartilhada com

    nós.

  5. CNA Havaí Classes
    11 de maio, 2011 às 07:07

    Pois é ... isso é realmente um post informativo. Eu sou novo blogueiro seria informação útil certeza para mim. Obrigado por compartilhar!

  6. Penas da coruja
    8 de maio de 2011 às 00:19

    Script funciona muito bem para mim muito bem como é. Muito obrigado!

  7. umair
    02 de maio de 2011 às 07:39

    Oi ...
    Estou enfrentando um problema, quando eu uso este, o seu mostrando um erro dizendo:
    "Reprovados: Função split () é preterido em C: \ wamp \ simplecsvimport.php \ teste1 \ www on line 64
    O arquivo não é gravável, verifique as permissões. Encontrado um total de 41 registros neste arquivo CSV. "

    Pls resposta, o que está errado!
    obrigado antecipadamente!

  8. justkid
    7 de abril, 2011 às 10:25

    Estou muito confuso com este código!
    mas eu não vou tentar até!
    BTW, como o código html ou campo para chamar esse código

  9. Jorge Dias
    14 mar 2011 às 19:01

    Obrigado, importador csv muito bom.
    Mas eu encontrei um pequeno problema, ele só funciona com arquivo CSV com a estrutura: "campo1", "campo2", "campo3", etc, mas eu hava um arquivo CSV assim: campo1, campo2, filed3; etc

    A única coisa que pode mudar é de R $ fieldseparator mas como posso "dizer" o script que o arquivo não usa "(delimitador de campo)?
    Minha ideia era uma combobox, com US $ fieldseparator (ou ;) e outra com US $ fielddelimiter (ou nada)

    Agradecemos antecipadamente.

  10. Enferrujado
    03 de fevereiro de 2011 às 14:56

    Alguma idéia de como começar esse script para trabalhar para os campos que são colocados entre aspas, para que os campos com vírgulas neles não é lido como uma nova entrada?

    Tenho dados que inclui uma vírgula como valores em dólares e uma seção de comentários, onde os usuários podem ter usado uma vírgula. Eu preciso de todo o campo importado e este roteiro trata-los como novos campos.

  11. qwewe
    23 de janeiro de 2011 às 14:56

    @ Mark Cloyd
    "Address = VALUES (endereço)
    Eu recebo um erro aqui como Parse error: erro de sintaxe, inesperado '='

  12. ronbowalker
    15 de janeiro de 2011 às 17:54

    @ Joofoo
    Eu tenho carregado o seu código, mas eu não obter informações atualizadas no banco de dados MySQL ...

    CSV contém:
    Cabeçalho - nome>, a senha, a mensagem, e-mail, imagem, data
    Linha2 -> Bill, cara,,,,
    Jane>, gal,,,, - row3
    Row4 -> Davi, filho,,,,

    E aqui está o código ...:
    <? Php

    / / Set-up do arquivo iphonelogin.php na pasta "remota" ...
    / * * Conectar ao db /
    / / $ Link = mysql_connect ('ronbo.db.6405862.hostedresource.com', 'ronbo', 'Pepper0689 ") or die (' Não foi possível conectar ao DB");
    / Mysql_select_db / ('ronbo', $ link) or die ('Não é possível selecionar a DB ");

    / / http://www.ihappyapps.com/DataFolder/loader.php
    /********************************/
    / * Código de http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
    / * Edite as entradas abaixo para refletir os valores apropriados
    /********************************/
    $ Databasehost = "dbhost";
    $ Dados = "nome";
    $ Databasetable = "tabela";
    $ Databaseusername = "username";
    $ Databasepassword = "senha";
    Fieldseparator $ = "";
    $ Lineseparator = "\ n";
    $ Csvfile = "spreadsheet.csv";
    /********************************/
    addauto $ = 1;
    /********************************/
    $ Salvar = 0;
    $ Outputfile = "output.sql";
    /********************************/

    if (! file_exists ($ csvfile)) {
    echo "O servidor tem o seu pedido, mas o arquivo CSV que você deseja carregar no banco de dados não está ... .. \ n";
    saída;
    }

    $ Chunksize = 1 * (1024 * 1024);
    $ File = fopen ($ csvfile, "rb");
    if (! $ arquivo) {
    echo "Erro ao abrir arquivo de dados \ n".;
    saída;
    }

    $ Tamanho = filesize ($ csvfile);

    if (! $ size) {
    echo "O arquivo está vazio \ n".;
    saída;
    }

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

    $ linhas = 0;
    consultas $ = "";
    while (! feof ($ arquivo)) {
    $ Csvline = fgets ($ arquivo, $ chunksize);

    linhas $ + +;
    if ($ linhas <2) continue;

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

    $ Linha = str_replace ("\ r linha ","",$);

    /************************************************* ************************************************** *********
    Esta linha de escapes o caractere especial. removê-lo se as entradas já estão escapou no arquivo CSV
    ************************************************** ************************************************** ********/
    $ Linha = str_replace ("'"," \ '", $ linha);
    /************************************************* ************************************************** ********/

    $ Linearray = explode ($ fieldseparator, $ linha);

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

    $ Consulta de inserção "= valores em US $ databasetable ('$ linemysql');";

    if ($ gravar) as consultas $ $ .= consulta. "\ N";

    @ Mysql_query ($ query);
    echo $ linhas "\ n".
    }
    fclose ($ arquivo);

    linhas $ -= 3;

    @ Mysql_close ($ con);

    <>

    Eu realmente poderia usar alguma ajuda em ter esse trabalho ...
    Ron

  13. joofoo
    11 jan 2011 às 11:16

    @ Roy
    Eu modifiquei o script, de modo que ele consome muito menos memória durante o processamento de arquivos grandes (que atingiu o limite de memória php quando eu tentei usá-lo em um arquivo CSV 100mb). As mudanças são as seguintes:


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

    $ Tamanho = filesize ($ csvfile);

    if (! $ size) {
    echo "O arquivo está vazio \ n".;
    saída;
    }

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

    $ linhas = 0;
    consultas $ = "";
    while (! feof ($ arquivo)) {
    $ Csvline = fgets ($ arquivo, $ chunksize);

    linhas $ + +;
    if ($ linhas <2) continue;

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

    $ Linha = str_replace ("\ r linha ","",$);

    /************************************************* ************************************************** *********
    Esta linha de escapes o caractere especial. removê-lo se as entradas já estão escapou no arquivo CSV
    ************************************************** ************************************************** ********/
    $ Linha = str_replace ("'"," \ '", $ linha);
    /************************************************* ************************************************** ********/

    $ Linearray = explode ($ fieldseparator, $ linha);

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

    $ Consulta de inserção "= valores em US $ databasetable ('$ linemysql');";

    if ($ gravar) as consultas $ $ .= consulta. "\ N";

    @ Mysql_query ($ query);
    echo $ linhas "\ n".
    }
    fclose ($ arquivo);

    linhas $ -= 3;

    @ Mysql_close ($ con);

    Obrigado,

  14. Um Khaled
    11 jan 2011 às 10:35

    @ Um Khaled
    Como posso exportar excel para UTF8 output.sql
    obrigado

  15. Um Khaled
    11 jan 2011 às 09:46

    Eu tentei o script, mas o output.sql está escrevendo coisas estranhas,
    inserir valores test_excel ("PK |!??????? k5 Q q Q q Q k5 k5 q ....

    gosto dessas coisas
    Como posso resolver esse problema. qualquer formato especial para o excel?

  16. Warren
    30 de dezembro de 2010 às 18:57

    Oi galera, só queria que todos vocês sabem que eu encontrei alguém para me escrever no programa atual que eu preciso.

  17. Warren
    29 de dezembro de 2010 às 01:31

    @ Warren

    /********************************/
    Este arquivo inclui muitas mudanças tentativa feita por Warren (não programador) em 28 de dezembro de 2010 em diante com base em comentários no site de origem e outras informações, de modo a tornar este programa para o que ele precisa. Isso é muito incompleta. Ajuda é o mais apreciado e muito necessárias.

    Linhas adicionadas para criar caixas de entrada para o site nome do banco de URL e senha etc
    /********************************/

    Bem-vindo ao Server Upload Utility

    Este programa é executado a partir do seu PC para preencher duas mesas vazias em um novo banco de dados MySQL em seu site por: carregar o nome de cada arquivo menor extensão, com um único número em frente como um contador, para keywords_categories tabela e, em seguida, atribui o número 1 na coluna em branco na frente da primeira coluna de dados do arquivo, e aumenta o número de um para cada arquivo processado posterior a partir desse diretório, para que o número assigend ao nome da categoria na tabela corresponde a palavras-chave que lhe pertencem, que são em seguida, submeteu à palavra-chave tabela.

    Isso é feito para todos os arquivos de CSV em um diretório específico no seu arquivo.

    Ele ignora os primeiros cinco linhas no seu arquivo csv.

    URL do site:
    Nome do banco:
    Banco de dados Nome de usuário:
    Senha de banco de dados:
    Caminho do diretório contendo os arquivos para upload:

    /********************************/
    Pergunta
    Como faço para obter dados acima das caixas de entrada no programa para corresponder ao pedido abaixo?
    /********************************/

    <? Php
    /********************************/
    Linha adicionada para evitar timeout em arquivos maiores.
    /********************************/

    set_time_limit (0);

    /********************************/
    Obter arquivo de nomes de arquivos a serem processados, remova a extensão de nome de arquivo, em seguida, usá-los para fazer o upload como nomes de categoria para keywords_categories tabela.
    /********************************/

    /********************************/
    Remove arquivos extensões nome
    copiado de PerlMonks www /? node_id = 151232
    /********************************/

    parse_out_extension sub {
    die ("Nenhum nome para analisar. \ n") if (_ @!);

    my ($ arquivo) = @ _;
    my @ peças;

    {Push (@ peças, $ _)} mapa split (/ \ / $ arquivo.);

    my $ fim = pop (peças @);
    $ File = ~ s / \ $ end / /.;

    return ($ arquivo) se $ arquivo;

    /********************************/
    / * O código original em http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
    / * Edite as entradas abaixo para refletir os valores apropriados
    /********************************/
    $ Databasehost = "localhost";
    $ Dados = "teste";
    $ Databasetable = "amostra";
    $ Databaseusername = "teste";
    Databasepassword $ = "";
    Fieldseparator $ = "";
    $ Lineseparator = "\ n";
    $ Csvfile = "filename.csv";
    /********************************/
    / * Você gostaria de adicionar um campo ampty no início dos registros?
    / * Note por Warren no caso das palavras-chave que são a primeira coluna de dados em cada arquivo, em uma base arquivo por arquivo esta em branco coum frot din lugar da chave precisa ser alterada para que ele captura o número atribuído ao nome da categoria que é composta do nome do arquivo menos a extensão e coloca-lo nesta coluna em branco novo primeiro.
    / * Isto é útil se você tiver uma tabela com o primeiro campo a ser um integer auto_increment. Note por Warren. Isto é o que é necessário no caso da exteniosn menos nomes de arquivos que são upoaded para keywords_categories tabela.
    / * Eo arquivo CSV não tem como o campo vazio antes dos registros.
    / * Defina a 1 para sim e 0 para não. ATENÇÃO: não definido para 1 se você não tiver certeza.
    / * Isso pode descarregar os dados no campo errado, se esse campo extra não existe na tabela. Note por Warren provavelmente não precisa deste arquivo que o meu caso, mas apenas uma suposição de minha parte, mas precisa ver se alguma necessidade.
    /********************************/
    addauto $ = 1;
    /********************************/
    / * Você gostaria de salvar as consultas mysql em um arquivo? Se sim definir $ guardar a 1.
    / * Permissão sobre o arquivo deve ser definido para 777. Ou fazer upload de um arquivo de amostra através de FTP e
    / * Alterar as permissões, ou execute no prompt: output.sql toque & & chmod 777 output.sql
    /********************************/
    $ Salvar = 0;
    $ Outputfile = "output.sql";
    /********************************/

    if (! file_exists ($ csvfile)) {
    echo "Arquivo não encontrado. Verifique se especificou o caminho correto \ n ".
    saída;
    }

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

    if (! $ arquivo) {
    echo "Erro ao abrir arquivo de dados \ n".;
    saída;
    }

    $ Tamanho = filesize ($ csvfile);

    if (! $ size) {
    echo "O arquivo está vazio \ n".;
    saída;
    }

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

    fclose ($ arquivo);

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

    /********************************/
    Para evitar a inserção dos primeiros quatro fileiras de adveristing texto do cabeçalho e uma linha em branco. A linha de código igual a zero foi substituído por código abaixo.
    /********************************/

    $ linhas = 1; (O valor do contador é 1)
    consultas $ = "";
    $ Linearray = array ();

    foreach (split ($ lineseparator, $ csvcontent) como $ linha) {

    $ Linhas + +; (Atribui a primeira linha # 2 header ()

    if ($ linhas> = 5) {(Start na posição # 5 algo "maior ou igual a 5?)

    consultas $ = "";
    $ Linearray = array ();

    foreach (split ($ lineseparator, $ csvcontent) como $ linha) {

    linhas $ + +;

    $ Linha = trim ($ linha, "\ t");

    $ Linha = str_replace ("\ r linha ","",$);

    /************************************
    Esta linha de escapes o caractere especial. removê-lo se as entradas já estão escapou no arquivo CSV
    ************************************/
    $ Linha = str_replace ("'"," \ '", $ linha);
    /*************************************/

    $ Linearray = explode ($ fieldseparator, $ linha);

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

    if ($ addauto)
    $ Consulta de inserção "em valores = $ databasetable (",'$');"; linemysql
    mais
    $ Consulta de inserção "= valores em US $ databasetable ('$ linemysql');";

    $ $ .= Consultas consulta. "\ N";

    /************************************
    Este pedaço de código abaixo foi adicionado ao agora mostrar mensagens de erro.
    ************************************/

    $ Resultado = mysql_query ($ query);

    / / Verifique o resultado
    / / Isso mostra a consulta real enviado para o MySQL, e do erro. Útil para depuração.
    if (! $ resultado) {
    $ Mensagem "consulta inválida: '=. mysql_error (). "\ N";
    $ Mensagem "consulta inteiro:" .=. $ Query;
    die ($ mensagem)
    }

    @ Mysql_close ($ con);

    if ($ gravar) {

    if (! is_writable ($ outputfile)) {
    echo "O arquivo não é gravável, verifique as permissões \ n".;
    }

    else {
    $ Arquivo2 = fopen ($ outputfile, "w");

    if (! $ arquivo2) {
    echo "Erro ao escrever no arquivo de saída \ n".;
    }
    else {
    fwrite ($ arquivo2, $ consulta);
    fclose ($ arquivo2);
    }
    }

    }

    echo "Encontrado um total de registros $ linhas neste arquivo CSV. \ n";

    ?>

  18. Warren
    28 dezembro de 2010 às 22:30

    Apenas uma ligeira correcção ao meu pedido, as duas tabelas no banco de dados MqSQL eu mencionei são efectivamente chamados:

    keywords_categories

    palavras-chave

  19. Warren
    28 dezembro de 2010 às 22:10

    @ Warren

    Além disso, a curiosidade só por ela também poderia processar um arquivo txt, (que tem apenas uma lista de palavras dela) da mesma maneira?

    (Eu sou novo nisto, e sei que pode ser pedir muito, por isso, se alguém poderia levar este projecto pouco para mim, se for o caso, talvez a gente pudesse discutir a minha pagando uma pequena quantia para o seu tempo em fazer as alterações satisfazer as minhas necessidades? Por favor, me avise.)

    Meu e-mail é: @ hotmail.com wr.spence

  20. Warren
    28 dezembro de 2010 às 21:37

    Eu não sou um programador. Eu vejo o seu script e ele pode estar perto do que eu preciso, ou talvez pudesse formar a base do que eu preciso, eu não tenho certeza.

    Eu preciso para realizar a mesma função de upload e outra vez, mas de um outro sub-diretório de cada vez do meu disco rígido, para uma lista de arquivos csv e, em diferentes MySQL DB cada vez (em um site differret cada vez). Na maioria dos casos, o db não terá todos os dados nele, mas seria ideal (mas não essencial) se o script ainda pode trabalhar com um db que tinha dados, sem afetar os dados existentes).

    Preciso dela para fazer o login no db no servidor (que deveria pedir-me o URL do site e nomes de usuário e senha db, etc).

    Eu preciso de algo que me permite navegar e escolher um nome de diretório no meu disco rígido, ou entrar nele.

    Em seguida, ele processa cada arquivo csv no mesmo diretório, um após o outro, como se segue:

    Em cada arquivo eu preciso primeiro ter o nome do arquivo (menos a extensão) e enviá-lo para o db na categoria mesa. Essa tabela contém uma chave numerada que então atribuídos a esse nome.

    Eu, então, a necessidade de script para carregar apenas colum da palavra (1 colum de dados) do arquivo para as palavras da tabela, e adicionar o nubmer correspondência para o nome da categoria a partir do primeiro arquivo.

    Note-se que o arquivo CSV frequentemente contém três linhas de texto do cabeçalho e uma linha em branco, todos os quatro que eu quero ignorado e não carregou. Existem muitas vezes linhas em branco na eend te da o arquivo que eu também quero isso para ignorar, aqueles, bem como ignorar as outras colunas, que podem ou não estar no arquivo CSV. Em alguns casos o arquivo CSV não pode ter qualquer título ou qualquer outras colunas.

    Então, próximo arquivo, até que se esgote de arquivos no diretório.

    Então eu gostaria que ele me diga "processo completo.", E se algum erro me dizer.

    Algum de vocês me ajudar com isso?

  21. Alfa
    26 de dezembro de 2010 às 18:32

    Obrigado por compartilhar excel para mysql script, isto é muito útil para mim.

  22. pruthvi
    24 de dezembro de 2010 às 16:09

    ya o código funciona, mas nw estou recebendo meus dados fechados em aspas @ Suman

  23. Suman
    23 de dezembro de 2010 às 14:18

    Suman :
    @ Pruthvi
    Oi,
    Por favor use o código dado abaixo ... ...

  24. Suman
    23 de dezembro de 2010 às 14:16

    @ Pruthvi

    Oi,

    Por favor use o código dado abaixo ... ...

  25. Suman
    23 de dezembro de 2010 às 14:12

    Rale Código É realmente útil para todos os desenvolvedores PHP.

  26. pruthvi
    23 de dezembro de 2010 às 09:48

    você pode explicar o seu código que você deseja substituir @ mysql_query ($ query); com o u deu declarações, mas ele está mostrando um erro $ mensagem é indefinido @ Peixe André

  27. pruthvi
    23 de dezembro de 2010 às 09:31

    mesmo problema comigo @ Peixe André

  28. pruthvi
    23 de dezembro de 2010 às 09:30

    desenvolvimento mais recente do código pode detectar o n º de linhas no arquivo CSV, mas a sua não exibi-lo na tabela

  29. pruthvi
    23 de dezembro de 2010 às 08:52

    o código está retornando um comunicado que não poderia encontrar o arquivo csv ...
    wat poderia ser o problema ....

  30. Peixe André
    10 dez 2010 às 15:28

    Ok, encontrei o problema. Eu tinha mispelt o nome da tabela. Mas só descobriu o problema quando eu tinha acrescentado o seguinte código que irá retornar um erro se o sql falhar. Atualmente, o script não dizer se houve um problema.
    Então altere a linha
    @ Mysql_query ($ query);

    a todos os seguintes: -

    $ Resultado = mysql_query ($ query);

    / / Verifique o resultado
    / / Isso mostra a consulta real enviado para o MySQL, e do erro. Útil para depuração.
    if (! $ resultado) {
    $ Mensagem "consulta inválida: '=. mysql_error (). "\ N";
    $ Mensagem "consulta inteiro:" .=. $ Query;
    die ($ mensagem)

    Espero que ajude alguém. Ele me fez.
    AJ

    @ Peixe André

  31. Peixe André
    09 de dezembro de 2010 às 16:26

    Quando eu executar este script usando um arquivo CSV que eu sei que as importações corretamente usando PHP Admin, o script é executado, informa o número correto de linhas com a mensagem "Encontramos um total de 193 registros neste arquivo CSV." Mas nenhum dos dados aparece na da tabela. Fiz alterações no csv para que eu possa ver se os dados estão sendo colocados em cima da mesa e não é. Alguma idéia?
    AJ

  32. Craig
    8 de dezembro de 2010 às 01:20

    O meu arquivo CSV importação também tem aspas em torno de cada campo (principalmente para evitar problemas, se eu precisar importar para o Excel para que ele não mangle os dados), então eu tinha esse problema quando era inserir os registros com aspas em torno dos dados. Eu descasquei todas as aspas duplas adicionando esta linha:

    $ Linha = str_replace (linha "\ "","",$);

    após esta linha:

    $ Linha = str_replace ("\ r linha ","",$);

    ea nova linha substitui as aspas duplas sem nada. É o mesmo que a linha antes, exceto que é remover \ "em vez de \ r (aspas duplas ao invés de retornos de carro).

    @ Neady

  33. lesma
    01 de dezembro de 2010 às 17:29

    Um pequeno grande programa.

    Existe uma maneira de substituir os dados em uma célula, por exemplo. 'Cidade' em csv e alterá-lo para um valor de uma página anterior, como uma $ _SESSION ou $ _POST valor?

  34. Evan Islã
    30 de novembro de 2010 às 17:23

    Isso é ótimo ... muito fácil de implementar. Agora tenho que descobrir como usar esse script ou semelhante para fazer o upload. Xls, juntamente com. Csv

  35. admin
    29 de novembro de 2010 às 16:57

    @ Mike
    Você pode tentar adicionar:
    set_time_limit (0);
    logo no início? (Logo após a tag de abertura php)

  36. Mike
    18 de novembro de 2010 às 21:48

    @ Tutoriais Exclusivo
    Existe uma maneira de ter não é tempo fora? ele funciona muito bem com 100k registros, mas quando vou para algo grande como um mil ou mais, é executado por cerca de 20 segundos, em seguida, vai para a tela em branco e os anúncios não há registros.? Graças.

  37. neady
    25 de outubro de 2010 às 18:21

    Tendo exato mesmo problema, alguém pode ajudar por favor?

    Roy :
    Oi,
    Eu uso esse script para importar um csv datafeed para mysql.
    O único problema que tenho, é que as aspas "" também estão inseridos na minha tabela
    Delimitador: (komma)
    Gabinete: "(aanhalingsteken)
    Nova linha: \ r \ n

  38. Ravi Kumar seelam
    19 de outubro de 2010 às 17:26

    Olá amigos,

    Eu precisava de uma ajuda urgente de vocês ... Então gentilmente me ajudar aqui está o código ...

    Elaborado o arquivo HTML. Mas eu preciso solução php ... Por favor ajuda para mim ... ... ..

    Enviar SMS

    Receptor Mobile Number:
    +91

    Lista Telefônica

    Upload de arquivo do Excel:

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

    Sender ID:
    :

    YOGA
    Grafs
    Mobitel

    var = frmvalidator novo validador ('freesms2');
    frmvalidator.addValidation ("frno", "req", "Digite o número do celular");
    frmvalidator.addValidation ("frno", "num", "Mobile campo número deverá conter números");
    frmvalidator.addValidation ("frno", "minLength = 10000", "número de celular deve ser 10 mil dígitos");
    frmvalidator.addValidation ("message3", "req", "Digite o texto SMS");

    Com os melhores cumprimentos,
    Ravi Kumar

  39. rashmi
    10 de outubro de 2010 às 08:41

    <? Php
    $ Newbal = '0 ';
    incluem "conn.php";
    if (isset ($ ['submit'] _POST))
    {
    $ Filename = $ _POST ['nome'];
    $ Handle = fopen ("$ arquivo", "r");
    while (($ dados fgetcsv = ($ handle, 1000, ","))! == FALSE)
    {

    $ Sql5 = mysql_query ("SELECT * FROM item onde o item = '$ dados [0 ]'");
    $ Num = mysql_num_rows ($ sql5);
    if ($ num == 0)
    {
    $ Import = "$ dados INSERT no item (item, gweight, Dweight) VALUES ('[0 ]','$ dados [1 ]','$ dados [2 ]')";
    mysql_query ($ importação) or die (mysql_error ());
    }
    else {

    echo "$ dados [0] sair";
    }
    }
    fclose ($ handle);
    "Importar feito" de impressão;

    }

    mais
    {
    ?>

    Digite o nome de arquivo para importar:

    Data
    SetIcon ("images / iconCalendar.gif");
    setDate $ MyCalendar-> (date ('d'), date ('m'), date ('Y'));
    $ MyCalendar-> ("./"); SetPath
    $ MyCalendar-> setYearInterval (2010, 2020);
    $ MyCalendar-> dateAllow ('2008-05-13 ', '2020-12-31');
    setDateFormat $ MyCalendar-> ('Y / m / d');

    $ MyCalendar-> writeScript ();
    ?>

    ele funciona muito bem quando eu carregar o arquivo CSV no localhost, mas mostrar erro de arquivo faltando quando executado em server.Please me ajudar, obrigado antecipadamente

  40. Educação Online
    29 setembro de 2010 às 10:26

    Acho que este é o melhor para csv carrinho de compras está em sql.

  41. susylu
    21 de setembro de 2010 às 14:54

    kaundo le doy Descarga me aparecen muchos fecha todos los archivos los Ubico en una sola carpeta? ¿

  42. Bhanu
    19 de setembro de 2010 às 22:44

    @ Zeshan

    usar explode em vez de dividir

  43. Zeshan
    16 de setembro de 2010 às 10:05

    Reprovados: separação da função () é preterido em E: \ wamp \ www \ floodpk2 \ simplecsvimport.php \ admin on line 63
    O arquivo não é gravável, verifique as permissões. Encontrado um total de 1.498 registros neste arquivo CSV.

    plz me ajuda urgente

  44. Farmácia on-line
    11 setembro de 2010 às 09:22

    8pills.com é a sua solução de uma paragem de saúde. 8pills.com proporcionar o melhor da classe e os medicamentos genéricos com marca.

  45. ORAM
    10 setembro de 2010 às 01:17

    Estou enfrentando aviso abaixo-

    wamp \ www \ Nova pasta (2) \ exl8.php na linha 20: Notice: Undefined offset: 1 em C

    wamp \ www \ Nova pasta (2) \ exl8.php na linha 20: Notice: Undefined offset: 2 em C

    wamp \ www \ Nova pasta (2) \ exl8.php na linha 20: Notice: Undefined offset: 2 em C

  46. Matt
    08 de setembro de 2010 às 23:18

    Isso funciona muito bem. Obrigado!

  47. Roy
    20 de agosto de 2010 às 12:02

    Aqui está o código btw,

    $ Databasehost = "localhost";
    $ Dados = "database";
    $ Databasetable = "tabela";
    $ Databaseusername = "admin";
    $ Databasepassword = "admin";
    Fieldseparator $ = "";
    $ Lineseparator = "\ n";
    $ Csvfile = "http://linktosite/";
    addauto $ = 0;
    $ Salvar = 0;
    $ Outputfile = "output.sql"; / / se salvar é: (1)
    $ File = fopen ($ csvfile, "rb");
    $ Csvcontent = stream_get_contents ($ arquivo);

    fclose ($ arquivo);

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

    $ linhas = 0;
    consultas $ = "";
    $ Linearray = array ();
    foreach (split ($ lineseparator, $ csvcontent) como $ linha) {

    linhas $ + +;

    $ Linha = trim ($ linha, "\ t");

    $ Linha = str_replace ("\ r linha ","",$);

    /************************************
    Esta linha de escapes o caractere especial. removê-lo se as entradas já estão escapou no arquivo CSV
    ************************************/
    $ Linha = str_replace ("'"," \ '", $ linha);
    /*************************************/

    $ Linearray = explode ($ fieldseparator, $ linha);

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

    if ($ addauto)
    $ Consulta de inserção "em valores = $ databasetable (",'$');"; linemysql
    mais
    $ Consulta de inserção "= valores em US $ databasetable ('$ linemysql');";

    $ $ .= Consultas consulta. "\ N";

    @ Mysql_query ($ query);
    }

    @ Mysql_close ($ con);

    if ($ gravar) {

    if (! is_writable ($ outputfile)) {
    echo "O arquivo não é gravável, verifique as permissões \ n".;
    }

    else {
    $ Arquivo2 = fopen ($ outputfile, "w");

    if (! $ arquivo2) {
    echo "Erro ao escrever no arquivo de saída \ n".;
    }
    else {
    fwrite ($ arquivo2, $ consulta);
    fclose ($ arquivo2);
    }
    }

    }

    echo "Encontrado um total de registros $ linhas neste arquivo CSV. adicionado ao DB \ n ".

  48. Roy
    20 de agosto de 2010 às 12:00

    Oi,

    Eu uso esse script para importar um csv datafeed para mysql.
    O único problema que tenho, é que as aspas "" também estão inseridos na minha tabela
    Delimitador: (komma)
    Gabinete: "(aanhalingsteken)
    Nova linha: \ r \ n

  49. Radikale
    18 agosto de 2010 às 18:35

    Bom trabalho!

    Eu só tenho uma pergunta.

    É possível utilizar caracteres mais à explodir comando no script?
    Eu allso necessidade de que haja uma separação com um. e;

    Muito obrigado, se algum corpo tem alguma idéia!

  50. Vinicius
    17 agosto, 2010 às 06:49

    Eu uso esse código ... ... ... Seu demasiado fácil de implementar em meu site ... ..
    Muito obrigado ..

    Eu quero um pouco mais de código para php ... ...
    Para converter a página em PDF ...

  51. Haan
    07 agosto de 2010 às 05:11

    Oi,
    Recebendo este erro. como resolver isso?

    Erro:
    O arquivo não é gravável, verifique as permissões. Encontrado um total de 13 registros neste arquivo CSV.

    Graças
    Haan

  52. Darwin
    23 de julho de 2010 às 01:23

    Hmm. .. Eu obtive erros como este arquivo "não é gravável permissões, verifique. Encontrado um total de 2 registros neste arquivo CSV. "Qualquer idéia que deu errado?

  53. Darwin
    23 de julho de 2010 às 01:21

    Hmm. .. Eu obtive erros como este arquivo "não é gravável permissões, verifique. Encontrado um total de 2 registros neste arquivo CSV. "Qualquer idéia que deu errado?

  54. pollux
    24 de junho de 2010 às 10:28

    Para ignorar a primeira linha / linha que é um cabeçalho no arquivo CSV fazer isso:
    ... ..
    if ($ linhas> 1) {

    if ($ addauto)
    $ Consulta de inserção "em valores = $ databasetable (",'$');"; linemysql
    mais
    $ Consulta de inserção "= valores em US $ databasetable ('$ linemysql');";

    $ $ .= Consultas consulta. "\ N";
    @ Mysql_query ($ query);
    }

  55. novato
    14 de junho de 2010 às 21:41

    Eu tive esse script rodando bem sob um domínio diferente. Então, quando me mudei, a tarefa do cron downloads csv, lojas, e, em seguida, remove-lo, mas doesnt carregá-la para mysql. Quando eu olhar para o arquivo import.php e tentar executá-lo eu recebo o erro dizendo que não pode encontrar o arquivo ter certeza de que o caminho correto. Ajuda.

  56. gio
    05 de junho de 2010 às 14:55

    Se você quiser evitar a inserção de primeira linha, basta jogar com o contador, por exemplo:

    $ linhas = 1; (O valor do contador é 1)
    consultas $ = "";
    $ Linearray = array ();

    foreach (split ($ lineseparator, $ csvcontent) como $ linha) {

    $ Linhas + +; (Atribui a primeira linha # 2 header ()

    if ($ linhas> = 3) {(Start na posição # 3 "qualquer coisa maior ou igual a 3")

  57. Coulton
    05 de junho de 2010 às 09:55

    roteiro maravilhoso, mas estou tendo problemas recorrentes.
    Depois de executar o script, ele diz: "Encontramos um total de 1 registros neste arquivo CSV.".
    Olhei para trás na minha mesa e que mostra um em branco.
    Eu verifiquei para ter certeza que era o número certo de colunas e não havia.
    Por favor, ajudem!

    Obrigado,
    Coulton

  58. saman
    03 de junho de 2010 às 01:10

    Se fico restrito ao acesso disco rígido do cliente como eu vou fazer o upload do arquivo csv para o exemplo server.For podemos definir o valor padrão para upload de arquivos de controle

  59. alejandro
    11 de maio, 2010 às 04:03

    Isso foi muito útil para mim ... mas eu precisava fazer uma modificação para a leitura em arquivos grandes. Eu estava confuso no início, mas depois percebi o script carrega o arquivo inteiro na memória (certo?). Então aqui vai uma versão personalizada do código, que lê as linhas em um de cada vez. ele lê em arquivos que parecem
    começar ficheiro:
    2,3, -1
    1, -2,4
    arquivo final (com muitos mais valores). Eu queria que cada linha a ser uma entrada na tabela e uma identificação com o número da linha, bem como o primeiro ID que representa o tamanho da tabela (que não vai mudar mais tarde).

    <? Php

    /********************************/
    / * Código de http://legend.ws/blog/tips-tricks/csv-php-mysql-import/
    / * Edite as entradas abaixo para refletir os valores apropriados
    /********************************/
    $ Databasehost = "localhost";
    $ Dados = "tomoku";

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

    / / Este código lê arquivos tatami no banco de dados

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

    / / Este loop sobre um monte de arquivos
    for ($ r = 2; R $ <14; $ r + +) {
    for ($ c = $ r, $ c

  60. Ap.Muthu
    28 de abril de 2010 às 06:02

    A seguir fez o truque para mim:
    LOAD DATA LOCAL INFILE LOW_PRIORITY
    'C: \ Documents and Settings \ Administrador \ Desktop SigmaS1.csv \ \'
    EM mydb »» TABELA ». Mytable»
    CAMPOS ESCAPED BY '\ \'
    TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"'
    LINHAS terminado por '\ r \ n'
    (`User`, `pwd`, `amt sno`, `,` ActiveRec »);

  61. paz
    20 de abril de 2010 às 11:22

    O script está lendo uma linha extra do arquivo CSV. Por exemplo, se os arquivos csv tem 25 registros Ele mostra que existem 26 registros. Pode dizer-me onde estou errado?

    Tenho acrescentado para verificar se ele é um primeira linha e continuar loop se a sua primeira linha.

    obrigado

  62. Carl
    18 de abril de 2010 às 11:00

    Como Gary, eu quero ser capaz de substituir um registro existente, mas por não atualizá-lo, apagando todos os dados no db. Sp em algum lugar por aqui:

    if ($ addauto)
    $ Consulta de inserção "em valores = $ databasetable (",'$');"; linemysql
    mais
    $ Consulta de inserção "= valores em US $ databasetable ('$ linemysql');";

    Como eu iria verificar se o registro existe e, em seguida Update ao invés de inserir?

  63. paz
    13 de abril, 2010 às 10:52

    Como faço para pular a primeira linha / linha que é um cabeçalho no arquivo CSV e inserir o restante dos dados em db?

  64. admin
    16 março, 2010 às 12:30

    @ Gary
    você poderia usar um @ mysql_query ("truncar $ databasetable"), logo após a declaração mysql_select_db @.
    Mas tenha cuidado pois esta ação irá acabar com os dados e não é reversível.

  65. admin
    16 março, 2010 às 12:28

    @ Kish
    o código atual não permite a navegação por / upload do arquivo.
    Você pode simplesmente colocar o arquivo CSV no mesmo diretório que o script PHP, e simplesmente definir a variável $ csvfile para ser igual ao nome do arquivo (sem o caminho)

  66. Jeremie
    09 de março de 2010 às 12:39

    Oi tudo,

    Como faço para conter esses csv cita a data "o dia, mês, data de 2010" e do Estado "prov, Estado" a uma coluna na minha base de dados? Eu vejo muitos exemplos, mas não posso fazê-lo funcionar. qualquer ajuda seria boa.

    ak, 10037591,1 ", terça-feira 9 março, 2010 15:55:16", 59,7151, -151.4434,2.7,75.90,32 ", península de Kenai, Alaska"
    thx

  67. data_type
    05 de março de 2010 às 12:03
  68. Gary
    2 de março de 2010 às 11:26

    Obrigado, esse código realmente ajudou!

    Como eu poderia modificá-lo para permitir que um formulário seja exibido na qual o usuário navega e seleciona o arquivo csv a ser importado para a mesa?

    E também como eu poderia fazer com que cada vez que um novo arquivo é submetido, ele iria substituir o que está armazenado na tabela?

    Muito obrigado

  69. Quis
    Fevereiro 17, 2010 às 14:31

    Este código é muito útil para mim ..
    obrigado.

    Como posso obter o arquivo em vez de procurar digitando o nome completo do caminho ..

    Por favor, ajudem neste processo.

    obrigado

  70. rajdeo
    4 de fevereiro de 2010 às 07:21

    Eu não entendia muito bem como funciona a partir de um arquivo de controle. significa, em primeiro procurar e escolher um arquivo e depois enviar, onde eu preciso modificado

  71. Mark Camp
    11 de janeiro de 2010 às 00:10

    Olá,

    Feitas algumas modificações. . Meu arquivo txt tem 3 colunas separadas por um caractere "|" (pipe). O roteiro mostra os dados do arquivo, a contagem das linhas, mas não introduzir os dados no banco de dados. Quaisquer comentários?

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

    fclose ($ arquivo);

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

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

    $ linhas = 0;
    consultas $ = "";
    $ Linearray = array ();

    $ count = 0;

    foreach (split ($ lineseparator, $ csvcontent) como $ linha) {

    $ Contador = $ contador + 1;

    linhas $ + +;

    $ Linha = trim ($ linha, "\ t");

    $ Linha = str_replace ("\ r linha ","",$);

    /************************************
    Esta linha de escapes o caractere especial. removê-lo se as entradas já estão escapou no arquivo CSV
    ************************************/
    $ Linha = str_replace ("'"," \ '", $ linha);
    /*************************************/

    $ Linearray = explode ($ fieldseparator, $ linha);

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

    if ($ addauto)

    $ Consulta de inserção "= em valores INDICADORES (" $ count "," $ linemysql');";

    mais

    $ Consulta de inserção "= em valores INDICADORES ('$ linemysql');";

    $ $ .= Consultas consulta. "\ N";

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

    echo "$ linemysql \ n";
    }

  72. Mark Cloyd
    03 de janeiro de 2010 às 19:33

    Excelente script! Eu precisava de um pequeno salto para começar um projeto que eu estava trabalhando e isso fez o truque.

    Eu fiz algo estranho notar no entanto, eu modifiquei o script para trabalhar com um formulário e eu notei que a procura, o último campo estava ficando arruinado por causa da nova linha char (ou r ou \ n ou ambos) ainda estava sendo gravado no banco de dados MySQL.

    Para esse fim, se você substituir:
    $ Linha = str_replace ("\ r linha ","",$);

    com:
    $ Linha = str_replace ('\ r linha',",$);

    ele vai manter o retorno de ser um problema, como para a nova linha, eu adicionei um pouco de algo que permite a inserção de novos registros, mas as atualizações registros existentes, de modo que você não acabar com entradas duplicadas. No topo do código abaixo, você vai ver onde eu fiz a mesma correção para a linha de reais novo char.

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

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

    if ($ addauto) {

    switch ($ databasetable) {

    caso ('endereço'):

    $ Duplicatevals = "address = VALUES (endereço),
    cidade = valores (cidade), estado = valores (estado),

    VALORES = zip (zip) ";

    break;

    caso ("dono"):

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

    addresskey = VALUES (addresskey) ";

    break;

    }

    $ Consulta de inserção "= valores em US $ databasetable newlinemysql (",'$)

    ON DUPLICATE KEY UPDATE

    $ Duplicatevals ";

    Else {}

    $ Consulta de inserção "= valores em US $ databasetable ('$ linemysql)

    ON DUPLICATE KEY UPDATE

    $ Duplicatevals ";

    }

    Além disso, na minha forma eu adicionei o nome da tabela e se eu queria a tabela a ser [boolean] "addauto" ou não como uma simples entrada de um drop-down (separados por vírgula), depois dividir o resultado no topo da simplecsvimport script.

    Finalmente, você deve se lembrar de definir índices no banco de dados para o "ON DUPLICATE ..." para trabalhar, os incrementos de auto não funciona neste caso, então você tem que definir um índice secundário na tabela de auto incremento, as tabelas que não "auto incremento t e têm campos de trabalho exclusivo com o único índice se for esse o caminho que você gostaria de ir.

    Espero que isso ajude alguém!

    Felicidades!

  73. phpwebdesigner2010
    08 de dezembro de 2009 às 21:39

    Preciso fazer o download de dados automaticamente a partir de um servidor remoto. Seu arquivo de um arquivo CSV, e eu preciso descompactá-lo e armazenar os dados em um banco de dados mysql que eu criei. Existem vários bancos de dados. A primeira seção a seguir é uma das bases de dados que alguém me ajudou e ele funciona maravilhosamente. Eu configurar uma tarefa agendada e ele baixa automaticamente, como previsto. No entanto tenho mais bancos de dados e não consigo tirar os outros para trabalhar.

    Nesta seção abaixo funciona bem!!
    --------------------------

    #! / Bin / bash

    deleteparam = "-delete-after ';
    # Deleteparam = "
    # Diretório = 'diretório-prefix = / $ HOME myfolder / myfolder / /'
    = diretório "
    # Userpwd = '-http-user = http blá-blá-password ='

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

    # If [-z "$ 1"], então
    # Echo Uso: $ 0 tabela
    # Exit
    # Fi

    ZIP = nome do arquivo de dados no servidor remoto
    ZIP = `toupper $ ZIP»

    # O arquivo dentro do zip tem um a menos _
    DATA = nome da tabela no meu banco de dados mysql
    DATA = `toupper $ DATA»

    # Rm $ TABLE.csv.zip
    # Rm $ data.csv

    cd / $ HOME myfolder / myfolder /
    ####### Obter o residencial

    'Wget http://3pv.mlslirealtor.com/Data3pv/DownloadBRSaction.asp?user_code=XXXXXX&password=XXXXXXX&data_type=datazip '-O $ ZIP.csv.zip
    dormir 10
    ####### Descompactá-lo
    pwd
    ls-la

    descompacte-o $ ZIP.csv.zip
    dormir 10
    ####### Carregá-lo

    wget-verbose $ deleteparam diretório $ $ userpwd http://mywebsite/myfolder/import.php?table = $ DATA
    300 sono

    ###### Excluir os arquivos

    ZIP.csv.zip rm $
    Data.csv rm $
    dormir 10
    _ ---------------------------
    TUDO ISSO ACIMA maravilhas

    ESTE É O QUE EU PRECISO DE AJUDA COM
    --------------------------
    1. Preciso de um script para adicionar o arquivo acima que irá baixar as fotos. Se você vê abaixo eu preciso de um script que automaticamente fica a data atual ea hora em que o script é executado. Há servidor mantém pic dos últimos 7 dias, e é constantemente atualizado. Depois que este script está correndo ele irá baixar os dados para a tabela que eu criei.

    2. Então, eu preciso de um script que consulta o banco de dados mysql procurando entradas que tenham fotos e então recuperar as fotos reais diretamente de seus servidores remotos. Este arquivo csv NÃO fotos download, apenas os dados que eu possa usar para executar um script para recuperar as fotos em um local determinado. Veja abaixo.
    Abaixo estão as instruções que eu recebi.

    INSTRUÇÕES
    Foto de dados é recuperada por HTTP. Os dados de fotos é atualizada uma vez por dia e está disponível para download como um arquivo CSV. Você pode escrever um script usando os dados do arquivo CSV para o ponto de volta para as imagens em nosso servidor de imagens. Você deve fornecer um valor para a QUERY STRING last_updt> 'YYYYMMDD HH: MM: SS' para a URL para retornar dados. O last_updt campo é o valor de data para a última vez que uma foto foi alterada no anúncio.

    Você terá de substituir os titulares user_code e senha lugar (XXXX), com as credenciais de login fornecido a você.

    Etapa 1: Para recuperar o anúncio preliminar de dados de fotografias de arquivo CSV ir para a URL abaixo.

    Http://remotewebserver/Data3pv/DownloadBRSaction.asp?user_code=XXX&password=XXXX&query_str=last_updt% 20%> 20'YYYYMMDD 20HH%: MM: SS 'e data_type = FOTOS

    Passo 2: Os dados de tabela deve baixar as fotos em formato CSV.

    Passo 3: Usando a bandeira Y eo Número ML nos dados que você pode ligar de volta para os locais a nossa imagem.

    Nosso caminho do diretório principal da imagem é a seguinte:

    http://remoteserver/folder/folder/folder/Last3DigistsofML # anúncio / # jpg.

    Por exemplo, A foto principal para o número 1899430 anúncio está localizado na

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

    Nossa imagem da estrutura adicional caminho do diretório é a seguinte:

    http://remoteserver/mlsphotos/full/PhotoPosition/Last3DigistsofML # anúncio / # _photoPosition.jpg

    Por exemplo a foto-A segunda lista para o número 1899430 está localizado na

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

  74. Nathan
    20 de outubro de 2009 às 05:59

    Oi, me diz que a contagem de registros, mas não colocar dados em banco de dados

    Espero que possa ajudar

    Nathan

  75. admin
    8 out 2009 às 16:48

    o comando é: tablename truncar.

    você pode inserir o seguinte na linha 58:
    @ Mysql_query ("truncar $ databasetable");

    mas esta não é reversível! por isso tome cuidado

  76. MAFF
    07 de outubro de 2009 às 07:24

    Como posso esvaziar minha tabela já preenchida antes de inserir o novo arquivo?
    ou posso atualizar uma entrada já existente?

    TRUNCATE, UPDATE? Como faço para obter isso na consulta?

  77. admin
    5 de outubro de 2009 às 08:46

    @ Andy Brotherton : Isso significa que a consulta está tentando inserir um registro com um número de colunas que não coincidem com os da tabela de banco de dados.

    1) Tem certeza de que o arquivo CSV tem exatamente o mesmo número de colunas que a tabela no banco?
    2) O separador de campo neste arquivo CSV realmente uma vírgula? ou é um guia, por exemplo, ou outras? Se não é uma vírgula, alterar o valor de R $ fieldseparator na linha 12
    3) A tabela precisa ser criado já no banco de dados antes de tentar carregar os dados nele. Tem certeza que você tem?

  78. Andy Brotherton
    04 de outubro de 2009 às 14:14

    Olá,

    Eu realmente gostaria de usar este script, mas eu não tenho certeza do que estou fazendo de errado. Eu recebo o mesmo problema mencionado acima, com dados não carregar no db. Ele localiza o número correto de linhas, mas não mostra nada no db.

    Mudei linha 88 @ mysql_query ($ query) or die (mysql_error ());

    e recebo essa mensagem de "Contagem de colunas não confere com a contagem de valores na linha 1"

  79. admin
    03 de outubro de 2009 às 18:02

    @ Noel
    Olá Noel.
    O CSV realmente conter um único registro?

    Como o script atingiu o estágio onde ele exibe o número de registros, presumo que não faltou quando conectado ao banco de dados (linhas 56-57), de modo que não é o problema.

    É possível que a consulta para inserir dados está falhando.
    Tente substituir a linha 88 com:
    mysql_query ($ query) or die (mysql_error ());

    e verificar qual o erro que você recebe.

  80. admin
    03 de outubro de 2009 às 17:58

    @ Okoth
    Olá Okoth.

    Provavelmente, você pode se livrar das linhas 33-54 e substituí-los com esta única linha:

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

    substituir os pontos com o URL apropriado (url direto para o arquivo CSV)

  81. admin
    03 de outubro de 2009 às 17:54

    @ Adrian
    Olá Adrian.
    Drupal, como você observou, tem estruturas de tabelas complexas. Dependendo de que tipo de dados você está importando, é muito provável que esses dados precisam ser dividida em várias tabelas, geralmente com uma chave externa comum, como o ID de nó.
    Infelizmente, o script acima não ajudaria a fazer isso.

  82. Okoth
    18 de setembro de 2009 às 20:16

    Obrigado pelo script. Muito compreensível.

    Como posso modificar esse script para que ele busca e armazenar um arquivo csv a partir da Internet em MySQL?

  83. Adrian
    13 setembro de 2009 às 19:03

    Todas oi
    Estou usando o Drupal para construir um novo site, o desafio que estou tendo agora é que eu preciso para importar dados de um arquivo CSV em um banco de dados mysql que tem mesas compartilhadas, portanto, alguns dos campos em que eu preciso para importar dados csv estão em diferentes seções do mesmo banco de dados vai funcionar esse script para mim? Se não for isso pode ser importado csv usando outro método?

    Por favor, informe, obrigado por qualquer ajuda.

    Atenciosamente
    Adrian

  84. Noel
    11 setembro, 2009 at 12:59

    Oi a todos!

    Parecem ter o script funcionar ... exept que não gravar dados no mysql ...
    Tal como com Chris: O script é concluída, e ainda saídas a contagem de registros, mas não toque no banco de dados de todos ... mas diz-me: Encontrado um total de 1 registros neste arquivo CSV.

    O que eu faço de errado (sou um noob em php e mysql)

    Graças
    Noel

  85. admin
    26 de agosto de 2009 às 03:20

    Oi Stanley, o problema é com as aspas simples. O software de blog aqui reescreve-los. Basta substituir 'e' com '

    PS: o comando acima é diretamente carregar um arquivo CSV para o banco de dados a partir do prompt mysql. Isso é bom, mas não relacionadas com o script acima :)

  86. Stanley Zdun
    24 de agosto de 2009 às 18:19

    ele diz para carregar este na base de dados

    dados de carga 'PATH' infile locais em campos de tabela TABELA denunciado por ',' Linhas terminadas por '\ n';

    eu mudar o caminho e entrar em sua mesa, mas dá-me um erro que o seu código a sintaxe errada 1064

    Alguém pode me dar alguns conselhos sobre o que fazer

    obrigado
    stan

  87. Gary Pearman
    23 de fevereiro de 2009 às 07:25

    Com relação à questão entre aspas, você pode apenas usar esse:

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

    Felicidades,
    Gaz.

  88. admin
    18 de dezembro de 2008 às 17:35

    Caro Chris,

    Por favor, substitua:
    @ Mysql_query ($ query);
    com:
    @ Mysql_query ($ query) or die (mysql_error ());

    e deixe-me saber qual o erro que lhe dá

  89. Chris
    18 de dezembro de 2008 às 14:31

    Olá a todos,

    Amor este script, e ele estava funcionando bem, agora, de repente o script não vai inserir os registros. O script é concluída, e ainda saídas a contagem de registros, mas não toca o banco de dados em todos os ...

    Alguma idéia?

    Graças
    C

  90. admin
    1 de dezembro de 2008 às 14:10

    Oi Marcos,

    primeiro, é referente ao arquivo selecionado na variável $ outputfile.
    segundo, esse arquivo precisa ser escrita. Eu suponho que você está usando Linux, não o Windows, pois isso geralmente não é um problema com o Windows.
    No Linux, basta SSH para a máquina, mude para o diretório onde o arquivo de saída é, e digite: chmod 777 nome_do_arquivo
    onde "nome" é o nome do arquivo real.
    Se você não tem o SSH, FTP muitos clientes alterar a permissão de suporte. Para este efeito, o FTP para a pasta contendo o arquivo de saída, em seguida, selecione o arquivo e localize a partir deste software ftp a opção de mudar a permissão. Defini-lo para 777, ou 'ler, escrever, executar' para todos.

  91. MarkFromHawaii
    19 nov 2008 às 04:00

    Oi tudo,

    Obrigado pelo script. Eu sou um noob em PHP e MySQL para que eu realmente aprecio algo assim. Eu tenho até gerar o arquivo "não é escrita, verificação de permissões" mensagem de erro no meu navegador. Alguém pode me explicar o comentário sobre a configuração da permissão para 777? Estou usando um Excel arquivo CSV gerado.? Agradecemos antecipadamente.

  92. gene
    29 de outubro de 2008 às 09:28

    Eu só posso obter a primeira linha do meu arquivo CSV a ser importado para o banco de dados.
    Aqui está uma cópia do arquivo de log:

    inserir valores de produção ("'2008-10-21 ', '50', '50 ', '50', 'esta é a linha primeiras notas', 'este é notas linha 2', 'esta é a linha 3 notas ', '0000-00-00', '0000-00-00 ', '0000-00-00', '456 Morningside Ave ',' ste. NY 512 ',' Brooklyn ',' ', '10023', 'Joe', 'Cliente 1');
    inserir valores de produção ("'2008-10-09 ', '50', '50 ', '50', 'esta é a linha primeiras notas',",",' 2008/10/09', '2008 . -10-14 ', '0000-00-00', '456 Morningside Ave ',' ste 512 ',' Brooklyn ',' Nova Iorque ', '10023', 'Joe', 'Cliente 1');
    inserir valores de produção ("'2008-10-14 ', '25', '25 ', '25', 'NOTAS 1',",",' 2008/10/14', '2008-10-17 ',' NULL ', '555 algum lugar' suite 123 ',' y nova 'Nova Iorque', '10001 ',' Joe ',' Nome 1 ');
    inserir valores de produção ("'2008-10-16 ', '45', '45 ', '45',",",",' 2008/10/16', '2008-10-24 ',' NULL',",",",",",'',"); Tom
    inserir valores de produção ("'2008-10-01 ', '34', '34 ', '34',",",",' 2008/10/02', '2008-10-04 ',' 2008/10/04',",",",",",'',"); Steve
    inserir valores de produção ("'2008-10-17 ', '50', '50 ', '50', 'esta é a linha primeiras notas',",",' 2008/10/03, 0000 . -00-00 ', '0000-00-00', '456 Morningside Ave ',' ste 512 ',' Brooklyn ',' Nova Iorque ', '10023', 'Joe', 'Cliente 1');
    inserir valores de produção ("'2008-10-18 ', '25', '25 ', '25', 'NOTAS 1',",",' 2008/10/04', '0000-00-00 ', '0000-00-00', '555 suite em algum lugar "," 123 "," y Nova Iorque Nova ',' ', '10001', 'Joe', 'Nome 1');
    inserir valores de produção ("'2008-10-19 ', '45', '45 ', '45',",",",' 2008/10/05', '0000-00-00 ',' 0000-00-00',"); Tom',",",",",",'
    inserir valores de produção ("'2008-10-20 ', '34', '34 ', '34', 'novas notas',",",' 2008/10/06', '0000-00-00 ', '0000-00-00',");',",",",",",' Steve
    inserir valores de produção ("'2008-10-21 ', '12', '12 ', '12', 'notas ainda mais recente',",",' 2008/10/07', '0000-00- 00 ', '0000-00-00',"); marca',",",",",",'
    inserir valores de produção ("'2008-10-22 ', '1', '0 ', '0',",",",' 2008/10/08', '0000-00-00 ',' 0000-00-00',",",",",",",");
    inserir valores de produção ("'2008-10-23 ', '2', '0 ', '0',",",",' 2008/10/09', '0000-00-00 ',' 0000-00-00',",",",",",",");
    inserir valores de produção ("'2008-10-24 ', '3', '0 ', '0',",",",' 2008/10/10', '0000-00-00 ',' 0000-00-00',",",",",",",");
    inserir valores de produção ("'2008-10-15 ', '0', '0 ', '0', 'depois',",",' 2008/10/11', '0000-00-00 ' , '0000-00-00',",",",",",",");
    inserir valores de produção ("'2008-10-16 ', '0', '0 ', '0', 'mais tarde ainda',",",' 2008/10/12', '0000-00-00 ', '0000-00-00',",",",",",",");
    inserir valores de produção ("'2008-10-17 ', '0', '0 ', '0', 'mais tarde ainda',",",' 2008/10/13', '0000-00-00 ', '0000-00-00',",",",",",");
    inserir valores de produção ("'2008-10-18 ', '0', '0 ', '0', 'mais tarde ainda',",",' 2008/10/14', '0000-00-00 ', '0000-00-00',",",",",",");
    inserir valores de produção ("'2008-10-19 ', '0', '0 ', '0', 'mais recente',",",' 0000-00-00', '0000-00-00 ' , '0000-00-00',",",",",",");
    inserir valores de produção ("'2008-10-01 ', '34', '34 ', '34', '',",",' mais recente 2008/10/02', '2008-10-04 ', '2008-10-04 bruce',",",",",",'');
    inserir valores de produção (",");

    Ele diz que é a inserção de 20 registros, mas apenas o primeiro torna-o no banco de dados. Alguma idéia?

  93. enim
    23 de outubro de 2008 às 04:16

    não inseridos na tabela de banco de dados onde eu quero que ela seja inserida ..: (

  94. login
    20 de outubro de 2008 às 18:10

    chefe Bom trabalho ;-)

  95. Fidel Gonzo
    10 de outubro de 2008 às 05:12

    Oi tudo,

    Eu fiz uma pequena alteração no seu código, por isso funciona como um importador CSV, como deveria.

    CSV é a primeira linha deve conter os nomes das colunas que você deseja importar, então muda o loop foreach:
    foreach (split ($ lineseparator, $ csvcontent) como $ linha) {

    linhas $ + +;

    $ Linha = trim ($ linha, "\ t");

    $ Linha = str_replace ("\ r linha ","",$);

    / * Obter nomes de coluna da primeira linha do CSV * /
    if ($ linhas == 1) {
    $ colunas = explode ($ fieldseparator, $ linha);

    $ Columnsql = colunas (",",$ implodir);

    echo $ columnsql;
    continuar;
    }

    /************************************
    Esta linha de escapes o caractere especial. removê-lo se as entradas já estão escapou no arquivo CSV
    ************************************/
    $ Linha = str_replace ("'"," \ '", $ linha);
    /*************************************/

    $ Linearray = explode ($ fieldseparator, $ linha);

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

    if ($ addauto)
    $ Consulta de inserção "= em $ databasetable ($ columnsql) VALUES ('$ linemysql');";
    mais
    $ Consulta de inserção "= em $ databasetable ($ columnsql) VALUES ('$ linemysql');";

    $ $ .= Consultas consulta. "\ N";

    @ Mysql_query ($ query);
    }

  96. admin
    06 de outubro de 2008 às 00:27

    Qual o tamanho do arquivo que você está tentando importar?
    em qualquer caso, tente adicionar a seguinte linha após as tags de abertura inicial:
    set_time_limit (300);
    Isto vai dar o script até 5 minutos (300 segundos) de tempo de execução.
    Substituição de 300 com 0 irá permitir que ele tome o tempo que for necessário.

  97. Phillip
    01 de outubro de 2008 às 22:26

    Oi lá, agradável graças script. Ao executá-lo eu recebo:
    Erro fatal: O tempo máximo de execução de 30 segundos excedido na linha 63

    Há algo que eu possa fazer para contornar esta situação?

  98. Roelof
    30 de setembro de 2008 às 08:06

    Robbie, obrigada por outro lado, é muito bem-vindos. Infelizmente, ele não funciona de imediato quando eu copiá-lo. Acho que algo está faltando, porque o código é espalhado em dois lugares.

    Você poderia checar o código exibido aqui? Está faltando alguma coisa?

  99. ASCASC
    27 setembro de 2008 às 05:04

    Brad, se você tivesse baixado mais cedo do que na semana passada, substituir o '<?' no topo com "<? php '(remova espaços)

  100. Brad
    26 de setembro de 2008 às 14:43

    Recebo a primeira tanto dele cortado eo resto apenas o código no meu navegador. Eu sei que o php está funcionando porque o resto do canteiro de obras.
    Eu fiz upgrade para php5 que isso importa?

  101. Robbie
    24 de setembro de 2008 às 14:27

    )
    / / Ignorar, porque ela se insere os elementos da matriz ruim
    mais
    newArray $ [$ y] = linearray ('"',",$ str_replace [$ y]);
    $ Linearray = array_values ​​($ newArray); / / repor as chaves para a nova matriz
    $ X + +;
    }
    }
    }

  102. Robbie
    24 de setembro de 2008 às 14:27

    Bem, aqui está a correção ao meu comentário anterior:

    inserir esta entre:

    $ Linearray = explode ($ fieldseparator, $ linha);

    ... Trecho de inserir código abaixo ....

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

    Localiza e mantém todas as "Coisas, Coisas Mais" juntos antes de implodir-lo.

    $ A = "";
    $ B = "";
    qoutecount $ = 0;
    for ($ x = 0; $ x -1) {
    $ Qoutecount + +;
    if ($ qoutecount == 1)
    $ A = $ x; / / armazenar a primeira instância
    elseif ($ qoutecount == 2) {
    quotecount $ = 0;
    $ B = $ x; / / armazena a segunda instância
    / / Que o faz ... compilar todos os elementos de $ a $ b em $ a e ignorar qualquer coisa elementos após um b $ $ na nova matriz;
    Newa $ = "" / / inicializar nova seqüência.
    for ($ z = $ a, $ z $ a & & $ y

  103. Robbie
    24 de setembro de 2008 às 12:19

    Não leva em conta áreas como esta linha:
    Fname, Lname, "Company, Inc", Cidade, Estado, CEP

    Company Inc e são separadas em duas colunas diferentes.

  104. Steve
    12 de setembro, 2008 às 12:19

    Rengaraj,
    o arquivo CSV deve ser no mesmo local que o arquivo PHP.
    Além disso, você realmente não tem que usar o mesmo nome de arquivo CSV.
    bbqrest.csv é um exemplo, substitua esse nome de arquivo com o seu próprio.

  105. Rengaraj
    12 de setembro, 2008 às 12:16

    Pode qualquer resposta rápida que eu tenho um bbqrest.csv csv no caminho correto (root) ..

  106. Rengaraj
    12 de setembro, 2008 às 12:11

    Estou recebendo este erro File not found. Verifique se especificou o caminho correto.

  107. ollyd
    09 de setembro de 2008 às 06:35

    seria uma boa idéia para evitar adicionar cabeçalhos no csv de ser apresentado no banco de dados. Ou para criar um script que puxa a primeira linha e cria uma db usando esses valores como os nomes das colunas.

  108. José
    03 de setembro de 2008 às 12:39

    Steve,

    Você colocaria esse script em uma pasta acessível via web, depois de alterar as variáveis ​​que precisam ser mudadas. Leia os comentários no script para descobrir o que você precisa especificar. Em seguida, chame o script em um navegador da Web, tais como:

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

  109. steve
    31 de agosto de 2008 às 19:04

    novato Total - rasgar meu cabelo para fora tentando importar csv Excel em phpMyAdmin (no Mac). Gostaria de saber exatamente onde e que eu faço com esse script php ...?

  110. dani
    25 de agosto de 2008 às 20:06

    Wow é legal ... tinha idéia depois de ler o seu código ... agradeço muito

  111. »Importação CSV
    07 de junho de 2008 às 10:29
  112. Importar um arquivo delimitado por vírgula no MySQL com PHP Script | eCommerce & SEO
    30 de novembro de 2007 às 11:59
  113. hfvd
    24 out 2007 às 12:44

    Oi lá, uma pequena modificação para os valores de auto incremento no (campo id) coluna 1

    veja variável $ contagem.

    ola, Enrico.

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

    $ linhas = 0;
    consultas $ = "";
    $ Linearray = array ();

    $ count = 0;

    foreach (split ($ lineseparator, $ csvcontent) como $ linha) {

    $ Contador = $ contador + 1;

    linhas $ + +;

    $ Linha = trim ($ linha, "\ t");

    $ Linha = str_replace ("'"," \ '", $ linha);

    $ Linearray = explode ($ fieldseparator, $ linha);

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

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

    $ $ .= Consultas consulta. "\ N";

    @ Mysql_query ($ query);
    }

    / / @ Mysql_close ($ con);

  114. »Csv Convertendo para sql usando php @ O Bloco de Codificação: blog programação, debates, cursos, recursos
    24 de setembro de 2007 às 14:12
  115. Len Lulow
    28 de fevereiro de 2007 às 20:11

    Muito obrigado isso muitas salvas de tempo! script Nice.

  116. S. Martinez
    22 de fevereiro de 2007 às 12:17

    Eu costumo usar o phpmyadmin, mas é verdade, em um caso não o tem instalado, e não tem acesso ao shell (como a maioria dos provedores de hospedagem compartilhada), isto pode vir em muito acessível.

  117. Jake
    25 de fevereiro de 2007 às 06:31

    Muito útil, obrigado.