Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Pessoal,
Estou tentando fazer uma importação do arquivo CSV para o MYSQL, porém não esta funcionando. Veja os arquivos?
Tabela CSV
ESFERA PTRES FONTE ND VALOR TIPO UG DATA
1 44732 112000000 339000 690000 D 158303 09/03/2012
1 44732 112000000 339000 MUZAMBI20RL 2277631.42 D 158303 09/03/2012
1 44732 112000000 339014 A20RLP01ZDP 30000 D 158303 09/03/2012
1 44732 112000000 339033 A20RLP01ZLP 10000 D 158303 09/03/2012
1 44732 112000000 339036 A20RLP01ZFP 10000 D 158303 09/03/2012
1 44732 112000000 339037 A20RLP01ZTP 433313.38 D 158303 09/03/2012
1 44732 112000000 339039 A20RLP01ZSP 211600 D 158303 09/03/2012
1 44732 112000000 339047 A20RLP01ZBP 86.62 D 158303 09/03/2012
1 44732 112000000 339093 A20RLP01ZEP 5000 D 158303 09/03/2012
1 44732 112000000 339139 A20RLP01ZOP 3500 D 158303 09/03/2012
1 44732 112000000 449000 259947.07 D 158303 09/03/2012
1 44732 250000000 339000 45187.98 D 158303 09/03/2012
1 44732 280000000 339147 A20RLP01ZZP 100 D 158303 09/03/2012
1 44733 100000000 339018 F2994P06ZPP 1500 D 158303 09/03/2012
1 44733 250000000 339000 47366.87 D 158303 09/03/2012
Estrutura da Tabela
Campo Tipo Nulo Padrão Comentários
cod_recebida int(11) Não
esfera int(1) Não
ptres varchar(10) Não
fonte char(15) Não
nd varchar(10) Sim NULL
pi varchar(15) Sim NULL
valor decimal(10,2) Não
tipo varchar(1) Não D
ug varchar(6) Não
data_posicao timestamp Sim NULL
importa.php
<HTML>
<HEAD>
<TITLE>Importa Arquivo</TITLE>
</HEAD>
<BODY>
<?php
// Conexão com o banco de bados
include("include/conecta.php");
$nome_temporario = $_GET["arquivo"];
$nome_temporario=$_FILES["arquivo"]["tmp_name"];copy($nome_temporario,"arquivos/$nome_arquivo");
$arquivo = fopen($nome_arquivo, "r");
if (!$arquivo){
echo ("<p>Arquivo não encontrado</p>");// VERIFICADOR PARA LER A PARTIR DA SEGUNDA LINHA
if ($qtd>0){
// RESGATA VALORES
$esfera = $linha[1];
$ptres = $linha[2];
$fonte = $linha[3];
$nd = $linha[4];
$valor = $linha[5];
$tipo = $linha[6];
$ug = $linha[7];
$data_posicao = $linha[8];
} // Fecha Qtd
$qtd++;
$sql = "INSERT INTO prov_recebida";
$sql.= "(esfera,ptres,fonte,nd,valor,tipo,ug,data_posicao)";
$sql.= "VALUES";
$sql.= "('.$esfera.','.$ptres.','.$fonte.','.$nd.','.$valor.','.$tipo.','.$ug.','.$data_posicao.')";
mysql_query($sql) or die (mysql_error());
} // fecha WHILE linha_arquivo
}// FECHA IF
// FECHA ARQUIVO
fclose($arquivo);
unlink("arquivos/$nome_arquivo"); // depois de tudo apaga o CSV
?>
</BODY>
</HTML>
Mensagem de erro.
Incorrect integer value: '..' for column 'esfera' at row 1
Alguem pode me ajudar nessa importação desse dados
Bruno,
Depois da alteração agora aparece esse erro:
Query Nº 1
INSERT INTO prov_recebida (esfera,ptres,fonte,nd,pi,valor,tipo,ug,data_posicao) VALUES ('1','44732','112000000','339000','','690000','"D"','158303' )
Insert error: Column count doesn't match value count at row 1
Pessoal,
Depois de muita luta o arquivo funcionou a importação do arquivo csv para o mysql, porém tenho uma dúvida na inclusão desses dados. Queria que fosse assim:
1 - Caso existisse esses dados: esfera,ptres,fonte,nd,pi e ug iguais na tabela prov_recebida. Gostaria que fizesse um update no campo valor se não um insert. Veja como esta o código somente para inclusão na tabela.
<?php
$nome_temporario = $_GET["arquivo"];
$nome_temporario=$_FILES["arquivo"]["tmp_name"];
$nome_arquivo = $nome_temporario; // qualquer que seja o nome enviado e renomeado
copy($nome_temporario,"arquivos/$nome_arquivo");
$abraArq = fopen($nome_arquivo, "r");
if (!$abraArq){
echo ("<p>Arquivo não encontrado</p>");
}else{
// CONTATDOR PARA PULAR A PRIMEIRA LINHA
$qtd = 1;
while ($valores = fgetcsv($abraArq, 2048, ";")) {
// VERIFICADOR PARA LER A PARTIR DA SEGUNDA LINHA
if ($qtd>1){
// RESGATA VALORES
$cod_recebida = $valores[0];
$esfera = $valores[1];
$ptres = $valores[2];
$fonte = $valores[3];
$nd = $valores[4];
$pi = $valores[5];
$valor = $valores[6];
$tipo = $valores[7];
$ug = $valores[8];
$data_posicao = $valores[9];
$valor = str_replace(".","", $valor);
$valor = str_replace(",",".", $valor);
$data = $data_posicao;
$dia = substr($data,0,2);
$mes = substr($data,3,2);
$ano = substr($data,6,4);
$data = "$ano-$mes-$dia";
$sql = "INSERT INTO prov_recebida";
$sql.="(cod_recebida,esfera,ptres,fonte,nd,pi,valor,tipo,ug,data_posicao)";
$sql.="VALUES";
$sql.="(NULL,'".$esfera."','".$ptres."','".$fonte."','".$nd."','".$pi."','".$valor."','".$tipo."','".$ug."','".$data."')";
mysql_query($sql) or die (mysql_error());
echo "<script language=JavaScript> window.alert('Os Registros foram incluidos com sucesso !'); </SCRIPT>";
echo "<script>window.location = 'arquivo.php?cad=trabalhador'</script>";
# FIM - EXECUÇÃO DO COMANDO SQL
} // Fecha Qtd
$qtd++;
} // fecha WHILE valores
fclose($abraArq);
unlink("arquivos/$nome_arquivo"); // depois de tudo apaga o CSV
}
?>
Alguém pode me ajudar nessa tarefa.
tente começar $linha[0];