daria para ser um pouco mais claro, to arrancando os poucos cabelos que tenho, consigo ler o arquivo, o sistema tentar dar o insert porém nao consegue alguem ai consegue retruturar este codigo.
pode mostrar algumas linhas do conteúdo de seu arquivo?
crie sempre uma variável php com a instrução depois a aplique na macro:
$_sql=“INSERT into Cdd VALUES '”.$linha."’ ";
sc_exec_sql($_sql);
tentei de outra forma
//$caminho_arquivo = “/tmp/” . {arquivo}.".csv";
//$arquivo = fopen($caminho_arquivo , ‘r’); //AQUI ABRO O ARQUIVO PARA VER SE ELE EXISTE…
$pathFile = $this->Ini->path_doc . “” . {arquivo};
$arquivo = fopen($pathFile , ‘r’);
if ($arquivo == false) { // CASO NAO ABRA, MSG DE ERRO.
sc_error_message(‘Não foi possível abrir o arquivo.’);
sc_error_exit();
} else {
fclose($arquivo); //FECHO ARQUIVO SE ABERTO COM SUCESSO
// EXECUTO O COPY, NA TABELA, ESPECIFICANDO OS CAMPOS, NO MEU CASO CAMPO1 É SERIAL
$SQL = “COPY Tab1 (idn,descn) FROM '”.$pathFile."’ DELIMITER ‘;’ CSV;";
sc_exec_sql($SQL);
}
e gera este erro
mssql_query(): message: Incorrect syntax near ‘idn’. (severity 15)
mssql_query(): General SQL Server error: Check messages from the SQL Server (severity 15)
mssql_query(): Query failed
Erro ao acessar o banco de dados
Incorrect syntax near ‘idn’.
{SC_DB_ERROR_INI}View SQL{SC_DB_ERROR_MID}COPY Tab1 (idn,descn) FROM ‘/tmp/edital.txt’ DELIMITER ‘;’ CSV;{SC_DB_ERROR_CLS}Close{SC_DB_ERROR_END}
$SQL = “COPY Tab1 (idn,descn) FROM '”.$pathFile."’ DELIMITER ‘;’ CSV;";
//sc_exec_sql($SQL);
echo $SQL;
pegue o resultado e tente executar direto no MSSQL pelo client do banco.
tentei assim
$pathFile = $this->Ini->path_doc . “/” . {arquivo};
$arquivo = fopen($pathFile , ‘r’);
if ($arquivo == false) die(‘Não foi possível abrir o arquivo.’);
while(!feof($arquivo)) {
$linha = fgets($arquivo); //LÊ CADA LINHA
$_sql=“INSERT into tab1 VALUES '”.$linha."’ ";
sc_exec_sql($_sql);
}
fclose($arquivo);
me retorna
mssql_query(): message: Incorrect syntax near ‘1,xxxxxx’. (severity 15)
mssql_query(): General SQL Server error: Check messages from the SQL Server (severity 15)
mssql_query(): Query failed
meu arquivo esta assim para teste
1,xxxxxx
2,uuuuuuu
3,ddddddddddddd
4,bbbbbbbbbbbbb
5,aaaaaaaaaaaaaa
a tabela do banco esta
tab1 nome da tabela
idn int
descn varchar
Wennys Carlos
bom dia estou arrancando os cabelos.
fiz igual vc escreveu e descreveu porem nao consigo fazer o insert no banco
daria para vc complementar o seu codigo com um exemplo pratico de exemplo?
Você deveria saber que
1,xxxxxxxxx não vai rolar
2 sim (1, ‘xxxxxxxxx’)
Se conhece bem php entende que apenas haverá uma substituição da variável php na string o que gera uma instrução sql errada.
deve quebrar a $linha em um array utilizando a função explode e montar cada valor da instrução INSERT
Você já achou o problema é aquela pecinha na frente do Teclado. hehee
UFA>>>>ate que enfim consegui. segue o código.
//o arquivo csv deve esta assim
//0ºcoluna,1ºcoluna,2ºcoluna,3ºcoluna,4ºcoluna,5ºcoluna,6ºcoluna,…17ºcoluna,18ºcoluna em diante
// nome , cpf, rg, … se ativo, previlegio
$tabela1 = “seg_users”;
$ll=“0”;
//nome do campo
$arquivo = $this->Ini->path_doc . “/” . {arquivo};
$arq = fopen($arquivo,‘r’);
while(!feof($arq))
for($i=0; $i<1; $i++){
if ($conteudo = fgets($arq)){
$ll++;
$linha = explode(';', $conteudo);
}
if ( ! isset($linha[0])) {
$linha[0] = null;
$linha[1] = null;
$linha[2] = null;
}
$nome = $linha[0];
$cpf =$linha[1];
$rg =$linha[2];
$sql_cns = mssql_query("SELECT cpf FROM $tabela1 WHERE cpf = '".$cpf."'")
or die (mssql_error());
$row_cns = mssql_num_rows($sql_cns);
if($row_cns == 0){ //Aqui faço a uniao cpf+rg para senha de primeiro acesso
↓
mssql_query("INSERT INTO $tabela1 (name,login,cpf,pswd,active,priv_admin) VALUES ('$linha[0]','$linha[1]','$linha[1]','$linha[1]$linha[2]','$linha[17]','$linha[18]')")
or die (mssql_error());
}else{
mssql_query("UPDATE $tabela1 SET name='".$nome."',login='".$cpf."',pswd='".$cpf.$rg."' WHERE login = '".$cpf."'")
or die (mssql_error());
}
$linha = array();// linpa o array de $linha e volta para o for
}
echo "
alert(’-----IMPORTAÇÃO EFETUADA COM SUCESSO-- Linhas Importadas-----.$ll–Usuarios-’);
</script>";
o que ele faz, caso tenha dados inseridos ele atualiza, se não ele insere, e no fim mostra quantos dados foram inseridos. BLZ