script PHP para importar dados csv para mysql
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.
Obrigado pela informação
Grande script! Tnx um lote
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.
Pois é ... isso é realmente um post informativo. Eu sou novo blogueiro seria informação útil certeza para mim. Obrigado por compartilhar!
Script funciona muito bem para mim muito bem como é. Muito obrigado!
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!
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
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.
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.
@ Mark Cloyd
"Address = VALUES (endereço)
Eu recebo um erro aqui como Parse error: erro de sintaxe, inesperado '='
@ 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 ");
/ / https://www.ihappyapps.com/DataFolder/loader.php
/********************************/
/ * Código de https://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
@ 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,
@ Um Khaled
Como posso exportar excel para UTF8 output.sql
obrigado
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?
Oi galera, só queria que todos vocês sabem que eu encontrei alguém para me escrever no programa atual que eu preciso.
@ 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 https://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";
?>
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
@ 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
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?
Obrigado por compartilhar excel para mysql script, isto é muito útil para mim.
ya o código funciona, mas nw estou recebendo meus dados fechados em aspas @ Suman
@ Pruthvi
Oi,
Por favor use o código dado abaixo ... ...
Rale Código É realmente útil para todos os desenvolvedores PHP.
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é
mesmo problema comigo @ Peixe André
desenvolvimento mais recente do código pode detectar o n º de linhas no arquivo CSV, mas a sua não exibi-lo na tabela
o código está retornando um comunicado que não poderia encontrar o arquivo csv ...
wat poderia ser o problema ....
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é
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
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
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?
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
@ Mike
Você pode tentar adicionar:
set_time_limit (0);
logo no início? (Logo após a tag de abertura php)
@ 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.
Tendo exato mesmo problema, alguém pode ajudar por favor?
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
<? 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
Acho que este é o melhor para csv carrinho de compras está em sql.
kaundo le doy Descarga me aparecen muchos fecha todos los archivos los Ubico en una sola carpeta? ¿
@ Zeshan
usar explode em vez de dividir
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
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.
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
Isso funciona muito bem. Obrigado!
Aqui está o código btw,
$ Databasehost = "localhost";
$ Dados = "database";
$ Databasetable = "tabela";
$ Databaseusername = "admin";
$ Databasepassword = "admin";
Fieldseparator $ = "";
$ Lineseparator = "\ n";
$ Csvfile = "https://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 ".
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
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!
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 ...
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
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?
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?
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);
}
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.
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")
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
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
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 https://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
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 »);
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
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?
Como faço para pular a primeira linha / linha que é um cabeçalho no arquivo CSV e inserir o restante dos dados em db?
@ 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.
@ 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)
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
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
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
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
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";
}
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!
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 https://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 https://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.
https://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:
https://remoteserver/folder/folder/folder/Last3DigistsofML # anúncio / # jpg.
Por exemplo, A foto principal para o número 1899430 anúncio está localizado na
https://remoteserver/folder/folder/1/430/1899430.jpg
Nossa imagem da estrutura adicional caminho do diretório é a seguinte:
https://remoteserver/mlsphotos/full/PhotoPosition/Last3DigistsofML # anúncio / # _photoPosition.jpg
Por exemplo a foto-A segunda lista para o número 1899430 está localizado na
https://remoteserver/folder/folder/2/430/1899430_2.jpg
Oi, me diz que a contagem de registros, mas não colocar dados em banco de dados
Espero que possa ajudar
Nathan
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
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?
@ 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?
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"
@ 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.
@ Okoth
Olá Okoth.
Provavelmente, você pode se livrar das linhas 33-54 e substituí-los com esta única linha:
$ Csvcontent = @ file_get_contents ("... https://");
substituir os pontos com o URL apropriado (url direto para o arquivo CSV)
@ 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.
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?
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
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
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
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
Com relação à questão entre aspas, você pode apenas usar esse:
$ Linearray ("/,(?=(?:[^ preg_split = \ "] * \" [^ \ "] * ")*(?![^ \ \"] * \ line "))/", $ );
Felicidades,
Gaz.
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á
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
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.
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.
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?
não inseridos na tabela de banco de dados onde eu quero que ela seja inserida ..: (
chefe Bom trabalho
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);
}
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.
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?
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?
Brad, se você tivesse baixado mais cedo do que na semana passada, substituir o '<?' no topo com "<? php '(remova espaços)
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?
)
/ / 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 + +;
}
}
}
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
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.
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.
Pode qualquer resposta rápida que eu tenho um bbqrest.csv csv no caminho correto (root) ..
Estou recebendo este erro File not found. Verifique se especificou o caminho correto.
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.
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:
https://www.example.com/path-to-script/simplescvimport.php
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 ...?
Wow é legal ... tinha idéia depois de ler o seu código ... agradeço muito
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);
Muito obrigado isso muitas salvas de tempo! script Nice.
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.
Muito útil, obrigado.