Importar registros de uma planilha excel

Bom dia Pessoal,
Cria um Controle para importar dados de uma planilha Excel, no evento OnValidate inclui o código. SC na versão 8.1
Após selecionar o arquivo excel e importar apresenta a mensagem de erro com caracteres estranhos, onde deveria trazer os dados da planilha.

ERRO:
SELECT * FROM TB_BI_PESSOA_SERVICO WHERE CPF_CNPJ = " õ’ýãšö O /îc)ÇwÚ‡œÝbñ ÿÿ PK !¸ ðxm xl/workbook.xmlŒRANÃ0 ¼#ñ Ëwê$mB©šTB€è õPÚ³‰7 UÇŽl‡´¿g“(¥ œ¼ã gÇ^®N•"Ÿ 4:¥á$ tn„Ô‡”¾o_îæ”8ϵàÊhHé ]e·7ËÖØã‡1G‚ Ú¥´ô¾^0æò î&¦ ÂØŠ{„öÀ\m W øJ±( Vq©é °°ÿÑ0E!sx2yS öƒˆ Å=Úw¥¬ Í–…T° &“¼®ßx…¾OŠ Å ÒƒHiŒÐ´ðcÃ6õc# v ¦Á”²ì2äÆ o”ßâx£:æ Í¢(é˜] ; ­û>ÔArÚK-L›ÒÙ £= (AÐö ½ ¾D¥ ÑÓ°÷” AND CD_SERVICO = AND DT_PESSOA_SERVICO = ""2SELECT * FROM TB_BI_PESSOA_SERVICO WHERE CPF_CNPJ = "òPú”ÞßÇq’ήÔûüð–~%º n£¸ ñ ºh×h k» Xص ; ßä芌õ… ýEž^‘±¾ û„Øè’çǘº¥·0‹“¨¿› ?%û ÿÿ PK !ÞdûdŸ ¸ xl/theme/theme1.xmlìYMo E ¾#ñ F{oc’¶ GuªØ± hÓF±[Ôãxw¼;õìÎjfœÔ7Ô ‘ qAâÆ •Z‰K9ñS EP¤þ Þ™Ù]ïÄ›&) h ­wöy¿?æ Ù«× Ä !)O:^ýrÍC$ñy@“°ãÝ .­{H*œ ˜ñ„t¼9‘ÞµÍwß¹Š7TDb‚€>‘ ¸ãEJ¥ ++Ò‡e" AND CD_SERVICO = /ó”$ðnÂEŒ <Šp% ø øÆleµVk­Ä˜& JplG@ƒ ŽnO&Ô’ÞfξÏ@F¢¤^ð™ jæ$£éK_PõÓSA¹! ¦u “sÙc Öñ@\À Gä ò ÃRÁ‹ŽW3 ÞÊæÕ ¼‘ 1u m‰nþ2ºŒ ˜® ™" BëƒFûÊvÁߘZÆõûý^¿^ð3ìû`®Õ¥Ì³1X¯wsž% ý¹Ì»WkÖ .¾Ä mIçv·Ûm¶3] AND DT_PESSOA_SERVICO = “S ²? KøõZ«±µêà Èâ›KøFw«×k9x ²øÖ ~p¥Ýj¸x Š M¦Kh ÐÁ ã^@&œíTÂ× ¾^Ëà dC‘bZÄ„'êµ ãû\¥Ñ+š 5OÉ û Ñ= ÅZ” 2 SELECT * FROM TB_BI_PESSOA_SERVICO WHERE CPF_CNPJ = "Þ ¸ôÆ.ùriI D:©SÕñÞO1TÇ‚ß«çß¾zþ ½zþäèá³£‡? =ztôð{ËË!ÜÁIX&|ùõ’ |ù!úýéW/ V —eü/ß}ôó ŸV ¡Œ


CÓDIGO (OnValidate) :

// Pegando o arquivo com caminho
$caminho = $this->Ini->path_doc;
$arq = $caminho.’/’.{arquivo};

// Processando a leitura
$fp = fopen($arq,‘r’);

// Pegando a primeira linha (cabeçalho)
$linha = fgets($fp);

// Pegando o caracter separador na coluna 12
$caracter = substr($linha,12,1);

// Processando arquivo
while ($dados = fgetcsv($fp, filesize($arq), $caracter))
$tabela[] = $dados;

fclose($fp);

$insert_sql = ‘INSERT INTO TB_BI_PESSOA_SERVICO (’
.‘CPF_CNPJ,CD_SERVICO,DT_PESSOA_SERVICO,QT_PESSOA_SERVICO,’
.‘VL_PESSOA_SERVICO,DS_OBSERVACAO,DS_CONVENIO,DT_CADASTRO,’
.‘CD_USUARIO_CADASTRO,DT_ATUALIZACAO,CD_USUARIO_ATUALIZACAO) VALUES’;
foreach ($tabela as $campo)
{
if (empty($campo[1])) {
break;
}

$check_sql = ‘SELECT * FROM TB_BI_PESSOA_SERVICO ’
.’ WHERE CPF_CNPJ = “’.$campo[0].’” AND CD_SERVICO = ‘.$campo[1]
.’ AND DT_PESSOA_SERVICO = “’.$campo[2].’”’;
echo $check_sql;

sc_select(dataset, $check_sql);
if (false == {dataset}) // Error while accessing database
{
sc_error_message(‘Erro durante acesso ao PESSOA SERVICO.’);
}
elseif (!{dataset}->EOF) // Existe na tabela
{
continue;
}

elseif ({dataset}->EOF) // Não existe na tabela
{
$CPF_CNPJ = $campo[0];
$CD_SERVICO = $campo[1];
$DT_PESSOA_SERVICO = $campo[2];
$QT_PESSOA_SERVICO = $campo[3];
$VL_PESSOA_SERVICO = $campo[4];
$DS_OBSERVACAO = $campo[5];
$DS_CONVENIO = $campo[6];
$DT_CADASTRO = ‘01/01/2000’;
$CD_USUARIO_CADASTRO = [gloLogin];
$DT_ATUALIZACAO = ‘01/01/2000’;
$CD_USUARIO_ATUALIZACAO = [gloLogin];

    // Monta a parte de inserção dos campos

    $insert_sql2 = " ('".$CPF_CNPJ."',".$CD_SERVICO.",'".$DT_PESSOA_SERVICO."',".$QT_PESSOA_SERVICO.",";
 $insert_sql2 .= "".$VL_PESSOA_SERVICO.",'".$DS_OBSERVACAO."','".$DS_CONVENIO."','".$DT_CADASTRO."',";
 $insert_sql2 .= 
	 "'".$CD_USUARIO_CADASTRO."','".$DT_ATUALIZACAO."','".$CD_USUARIO_ATUALIZACAO."'),";
 $insert_sql .= $insert_sql2;

}

}
if (empty($insert_sql2)) {
sc_error_message(“Não há registros a atualizar, verifique”);
}
else {
// Tira o último caractere (vírgula extra)
// $insert_sql = substr($insert_sql, 0, -1);

// Inserir registros
sc_exec_sql($insert_sql);

// Pega o número de registros inseridos
$cadastrados = mysql_affected_rows();
sc_error_message("Lojas cadastradas: " . $cadastrados);
}

Aldir bom dia,

A montagem do teu INSERT está errada. Tens que separar cada campo por vírgula, mas usando aspas para poder aparecer corretamente no comando. Faça o seguinte: dê um ECHO $insert_sql pra você ir vendo como está ficando o comando e assim vais debugando, antes de mandar executar o comando SQL.

Verifica, e salva novamente este arquivo do EXCEL em extensão CSV, se não vai dar esse erro mesmo, o EXCEL é codificado/criptografado no padrão dele.

Kleyber, bom dia.
Agradeço pela dica.

Mas acho que o erro está dando um pouco antes do insert, no camando select
$check_sql = ‘SELECT * FROM TB_BI_PESSOA_SERVICO ’
.’ WHERE CPF_CNPJ = “’.$campo[0].’” AND CD_SERVICO = ‘.$campo[1]
.’ AND DT_PESSOA_SERVICO = “’.$campo[2].’”’;

No seminário desse link e mostrado como fazer a importação.
https://youtu.be/SwSi3-v84UU

Jailton, bom dia.
a dica funcionou, obrigado.

Mas me deparei com outro problema. Ao recuperar a linha retorna o valor : coluna1;coluna2;coluna3;coluna4;coluna5.

Preciso separar as colunas, porque as colunas : coluna1 e coluna3 são caracteres. Portanto, preciso incluir as aspas antes do insert na tabela.

Desde já agradeço.

Arranca toda a parte do seu INSERT e ADAPTA esse meu código, olha como fica fácil fazer INSERT.

INSERT (METÓDO NOVO DO SC, Melhor para facilitar inclusão)

$insert_table  = 'TBLMOV';  // Nome da Tabela
$insert_fields = array(   
	'CODINFENTRADA'    => "[glo_codientrada]",  
	'DESCRINFENTRADA'  => "[glo_descrientrada]",
	'qtdmov'           => "[glo_qtdentrada]",
	'OBSNFENTRADA'     => "$Obs_Entrada_x",
	'datamov'          => "'{Data}'",
	'DATAEMISSAO'      => "'2016-01-06'",
	'customov'         => "[glo_vlrentrada]",
	'coditem'          => "0"
);

// Inserir registro
$insert_sql = 'INSERT INTO ' . $insert_table
    . ' (' . implode(', ', array_keys($insert_fields)) . ')'
    . ' VALUES (' . implode(', ', array_values($insert_fields)) . ')';

sc_exec_sql($insert_sql);

Jailton, bom dia.
Vou seguir a dica.

Mas como vou recuperar os valores campo a campo para atribuir no “$insert_fields”, porque o retorno do arquivo CSV é uma string “coluna1;coluna2;coluna3;coluna4;coluna5” com dados variáveis? Exemplo : “MARIA;1;10/05/2015;1212;121213”

Existe uma função substring, onde o valor da “coluna1” vai até encontrar o caracter “;” (Exemplo : coluna1 = MARIA) ? E assim por diante até recuperar o valor da última coluna.

$insert_fields = array(
‘CODINFENTRADA’ => “coluna1”,
‘DESCRINFENTRADA’ => “coluna2”,
‘qtdmov’ => “coluna3”,
‘OBSNFENTRADA’ => “coluna4”,
‘datamov’ => “‘coluna5’”
);

Desde já agradeço.

Essa parte onde você coloca os valores nas variáveis você mantem, é só na hora de gerar o INSERT que vai usar a outra parte.
$CPF_CNPJ = $campo[0];
$CD_SERVICO = $campo[1];
$DT_PESSOA_SERVICO = $campo[2];
$QT_PESSOA_SERVICO = $campo[3];
$VL_PESSOA_SERVICO = $campo[4];
$DS_OBSERVACAO = $campo[5];
$DS_CONVENIO = $campo[6];
$DT_CADASTRO = ‘01/01/2000’;
$CD_USUARIO_CADASTRO = [gloLogin];
$DT_ATUALIZACAO = ‘01/01/2000’;
$CD_USUARIO_ATUALIZACAO = [gloLogin];

Jailton,
após converter o arquivo excel para CSV.

O valor do “$campo[0]” retorna a string toda “coluna1;coluna2;coluna3;coluna4;coluna5” ( “MARIA;1;10/05/2015;1212;121213”) e não somente o valor “coluna1”, neste caso MARIA.

Por isso, questionei sobre uma função substring para quebrar o valor dos campos.

Refiz seu código agora só adaptar os nome dos campos e ver se são números ou alfanuméricos, como não tenho o CSV e nem a BASE aqui chutei alguns, ai só colocar ’ ou tirar no $insert_fields

<?php

// Exemplo de scrip para exibir os nomes obtidos no arquivo CSV de exemplo

// CÓDIGO (OnValidate) :

// Pegando o arquivo com caminho
$caminho = $this->Ini->path_doc;
$arq = $caminho.'/'.{arquivo};

$delimitador = ';';
$cerca = '';

$cadastrados=0;

// Abrir arquivo para leitura
$f = fopen($arq, 'r');
if ($f) {

    // Ler cabecalho do arquivo
    $cabecalho = fgetcsv($f, 0, $delimitador, $cerca);

    // Enquanto nao terminar o arquivo
    while (!feof($f)) {

        // Ler uma linha do arquivo
        $linha = fgetcsv($f, 0, $delimitador, $cerca);
        if (!$linha) {
            continue;
        }

        // Montar registro com valores indexados pelo cabecalho
        $registro = array_combine($cabecalho, $linha);

        // Obtendo campos do CSV
	// Olhar no Sseu CSV como estão os NOMES CABEÇALHO dos campos e colocar ['NOME_CAMPO']
        $CPF_CNPJ_x = $registro['CPF_CNPJ'];
	$CD_SERVICO_x = $registro['CD_SERVICO'];
	$DT_PESSOA_SERVICO_x = $registro['DT_PESSOA_SERVICO'];
	$QT_PESSOA_SERVICO_x = $registro['QT_PESSOA_SERVICO'];
	$VL_PESSOA_SERVICO_x = $registro['VL_PESSOA_SERVICO'];
	$DS_OBSERVACAO_x = $registro['DS_OBSERVACAO'];
	$DS_CONVENIO_x = $registro['DS_CONVENIO'];
	$DT_CADASTRO_x = $registro['DT_CADASTRO'];
	$CD_USUARIO_CADASTRO_x = $registro['CD_USUARIO_CADASTRO'];
	$DT_ATUALIZACAO_x = $registro['DT_ATUALIZACAO'];
	$CD_USUARIO_ATUALIZACAO_x = $registro['CD_USUARIO_ATUALIZACAO'];

		$insert_table  = 'TB_BI_PESSOA_SERVICO';  // Nome da Tabela
		$insert_fields = array(
			'CPF_CNPJ'               => "'$CPF_CNPJ_x'",
			'CD_SERVICO'             => "$CD_SERVICO_x",
			'DT_PESSOA_SERVICO'      => "'$DT_PESSOA_SERVICO_x'",
			'QT_PESSOA_SERVICO'      => "$QT_PESSOA_SERVICO_x",
			'VL_PESSOA_SERVICO'      => "$VL_PESSOA_SERVICO_x",
			'DS_OBSERVACAO'          => "'$DS_OBSERVACAO_x'",
			'DS_CONVENIO'            => "'$DS_CONVENIO_x'",
			'DT_CADASTRO'            => "'$DT_CADASTRO_x'",
			'CD_USUARIO_CADASTRO'    => "$CD_USUARIO_CADASTRO_x",
			'DS_CONVENIO'            => "'$DS_CONVENIO_x'",
			'DT_ATUALIZACAO'         => "'$DT_ATUALIZACAO_x'",
			'CD_USUARIO_ATUALIZACAO' => "$CD_USUARIO_ATUALIZACAO_x"
		);

		// Inserir registro
		$insert_sql = 'INSERT INTO ' . $insert_table
			. ' (' . implode(', ', array_keys($insert_fields)) . ')'
			. ' VALUES (' . implode(', ', array_values($insert_fields)) . ')';

		sc_exec_sql($insert_sql);

		$cadastrados++;

    }
    fclose($f);
}

if ($cadastrados==0) {
    sc_error_message("Não há registros a atualizar, verifique");
} else {
    sc_error_message("Lojas cadastradas: " . $cadastrados);
}


?>

http://www.melhorweb.com.br/artigo/704-Abrindo-arquivos-CSV-com-PHP.htm

Jailton, bom dia.
Agradeço por escrever o código.

Somente ontem consegui realizar os testes e surgiu a situação :

Quando seleciono o arquivo e clico no OK, começa a leitura do arquivo e não “anda”, ou seja, fica processando e trata o sistema. Tenho que iniciar o SC.

O problema deve estar na parte do While, será que não está faltando algum comando ou função?


CÓDIGO :


// Exemplo de scrip para exibir os nomes obtidos no arquivo CSV de exemplo
// CÓDIGO (OnValidate) :

// Pegando o arquivo com caminho
$caminho = $this->Ini->path_doc;
$arq = $caminho.’/’.{arquivo};
$delimitador = ‘;’;
$cerca = ‘’;

$cadastrados=0;

// Abrir arquivo para leitura
$f = fopen($arq, ‘r’);
if ($f) {
// Ler cabecalho do arquivo
$cabecalho = fgetcsv($f, 0, $delimitador, $cerca);
// Enquanto nao terminar o arquivo
while (!feof($f)) {
// Ler uma linha do arquivo
$linha = fgetcsv($f, 0, $delimitador, $cerca);
if (!$linha) {
continue;
}

    // Montar registro com valores indexados pelo cabecalho
    $registro = array_combine($cabecalho, $linha);

    // Obtendo campos do CSV
// Olhar no Sseu CSV como estão os NOMES CABEÇALHO dos campos e colocar ['NOME_CAMPO']
    $CPF_CNPJ_x = $registro['CPF_CNPJ'];
    $CD_SERVICO_x = $registro['CD_SERVICO'];
    $DT_PESSOA_SERVICO_x = $registro['DT_PESSOA_SERVICO'];
    $QT_PESSOA_SERVICO_x = $registro['QT_PESSOA_SERVICO'];
    $VL_PESSOA_SERVICO_x = $registro['VL_PESSOA_SERVICO'];
    $DS_OBSERVACAO_x = $registro['DS_OBSERVACAO'];
    $DS_CONVENIO_x = $registro['DS_CONVENIO'];
    $DT_CADASTRO_x = $registro['DT_CADASTRO'];
    $CD_USUARIO_CADASTRO_x = $registro['CD_USUARIO_CADASTRO'];
    $DT_ATUALIZACAO_x = $registro['DT_ATUALIZACAO'];
    $CD_USUARIO_ATUALIZACAO_x = $registro['CD_USUARIO_ATUALIZACAO'];

	$insert_table  = 'TB_BI_PESSOA_SERVICO';  // Nome da Tabela
	$insert_fields = array(
		'CPF_CNPJ'               => "'$CPF_CNPJ_x'",
		'CD_SERVICO'             => "$CD_SERVICO_x",
		'DT_PESSOA_SERVICO'      => "'$DT_PESSOA_SERVICO_x'",
		'QT_PESSOA_SERVICO'      => "$QT_PESSOA_SERVICO_x",
		'VL_PESSOA_SERVICO'      => "$VL_PESSOA_SERVICO_x",
		'DS_OBSERVACAO'          => "'$DS_OBSERVACAO_x'",
		'DS_CONVENIO'            => "'$DS_CONVENIO_x'",
		'DT_CADASTRO'            => "'$DT_CADASTRO_x'",
		'CD_USUARIO_CADASTRO'    => "'$CD_USUARIO_CADASTRO_x'",
		'DT_ATUALIZACAO'         => "'$DT_ATUALIZACAO_x'",
		'CD_USUARIO_ATUALIZACAO' => "'$CD_USUARIO_ATUALIZACAO_x'"
		
	);

	// Inserir registro
	$insert_sql = 'INSERT INTO ' . $insert_table
		. ' (' . implode(', ', array_keys($insert_fields)) . ')'
		. ' VALUES (' . implode(', ', array_values($insert_fields)) . ')';
	sc_exec_sql($insert_sql);

	$cadastrados++;

}
fclose($f);

}

if ($cadastrados==0) {
sc_error_message(“Não há registros a atualizar, verifique”);
} else {
sc_error_message("Pessoas Serviço cadastrados: " . $cadastrados);
}


ARQUIVO CSV


[‘CPF_CNPJ’] [‘CD_SERVICO’] [‘DT_PESSOA_SERVICO’] [‘QT_PESSOA_SERVICO’] [‘VL_PESSOA_SERVICO’] [‘DS_OBSERVACAO’] [‘DS_CONVENIO’] [‘DT_CADASTRO’] [‘CD_USUARIO_CADASTRO’] [‘DT_ATUALIZACAO’] [‘CD_USUARIO_ATUALIZACAO’]
1 1 05/04/2016 1 50 a d 01/01/2010 [gloLogin] 01/01/2010 [gloLogin]
1 2 05/04/2016 1 70 a d 01/01/2010 [gloLogin] 01/01/2010 [gloLogin]

Desde já agradeço.

Veja se os delimitador do seu cabeçalho do seu csv são esses:
$delimitador = ‘;’;
$cerca = ‘’;

Tem gente que usa: , e aspa dupla entre os campos.
$delimitador = ‘,’;
$cerca = ‘"’;

Um exemplo da função:
http://www.melhorweb.com.br/artigo/704-Abrindo-arquivos-CSV-com-PHP.htm

Essa parte: // Olhar no seu CSV como estão os NOMES CABEÇALHO dos campos e colocar [‘NOME_CAMPO’] não é pra vc fazer no CSV é pra fazer no código era só pra olhar,
o nome do cabeçalho no CSV e ajustar o código
Se tava:
NOME;ENDERECO;CIDADE ai no código do php ali naquela parte arruma de acordo com o nome do campo que tá no .csv

Pelo visto, não tem delimitador no CSV… daí tem que usar brancos mesmo do tipo ’ ’

Amigos, bom dia.
Funcionou utilizando os limitadores :
$delimitador = ‘;’;
$cerca = ‘"’;

Agradeço pela ajuda.

Boa noite pessoal, tenho tentado fazer a aplicação para importar, mas sem sucesso. Porém, acho que estou muito próximo de realizar com as postagens a este respeito… a Aplicação chega a exibir a mensagem de Ligações Cadastradas com Sucesso !! Tudo perfeito, mas na base não entra… Através do phpMyAdmin usando o mesmo CSV ela insere. Por favor, se puderem me ajudar, eu agradeço muito.

dei um ECHO $insert_sql;

// Pegando o arquivo com caminho
$caminho = $this->Ini->path_doc;
$_arquivo = $caminho.'/'.{importa_lig};

$_Delimitador = ';';
$_Cerca = '"';

$_Cadastrados=0;

// Abrir arquivo para leitura
$arq = fopen($_arquivo, 'r');
if ($arq) {

    // Ler cabecalho do arquivo
    $cabecalho = fgetcsv($arq, 0, $_Delimitador, $_Cerca);

    // Enquanto nao terminar o arquivo
    while (!feof($arq)) {

        // Ler uma linha do arquivo
        $linha = fgetcsv($arq, 0, $_Delimitador, $_Cerca);
        if (!$linha) {
            continue;
        }

        // Montar registro com valores indexados pelo cabecalho
        $registro = array_combine($cabecalho, $linha);

        // Obtendo campos do CSV
      // Olhar no Seu CSV como estão os NOMES CABEÇALHO dos campos e colocar ['NOME_CAMPO']
		$usuario_clientes = $registro['usuario_clientes'];
	 	$data_clientes = $registro['data_clientes'];
		$horario_clientes = $registro['horario_clientes'];
		$recepcao_clientes = $registro['recepcao_clientes'];
		$sexo_clientes = $registro['sexo_clientes'];
		$nome_clientes = $registro['nome_clientes'];
		$idade_clientes = $registro['idade_clientes'];
		$telefone1_clientes = $registro['telefone1_clientes'];
		$telefone2_clientes = $registro['telefone2_clientes'];
		$midia_clientes = $registro['midia_clientes'];
		$profissao_clientes = $registro['profissao_clientes'];
		$estado_civil_clientes = $registro['estado_civil_clientes'];
		$email_clientes = $registro['email_clientes'];
		$nome_conjuge_clientes = $registro['nome_conjuge_clientes'];
		$idade_conjuge_clientes = $registro['idade_conjuge_clientes'];
		$profissao_conjuge_clientes = $registro['profissao_conjuge_clientes'];
		$email_conjuge_clientes = $registro['email_conjuge_clientes'];
		$observacao_clientes = $registro['observacao_clientes'];
		$endereco_clientes = $registro['endereco_clientes'];
		$numero_clientes = $registro['numero_clientes'];
		$complemento_clientes = $registro['complemento_clientes'];
		$bairro_clientes = $registro['bairro_clientes'];
		$cep_clientes = $registro['cep_clientes'];
		$cidade_clientes = $registro['cidade_clientes'];
		$referencia_clientes = $registro['referencia_clientes'];
		$terapeuta_clientes = $registro['terapeuta_clientes'];
		$responsavel_visita_clientes = $registro['responsavel_visita_clientes'];
		$data_visita_clientes = $registro['data_visita_clientes'];
		$horario_visita_clientes = $registro['horario_visita_clientes'];
		$status_clientes = $registro['status_clientes'];
		$filial_clientes = $registro['filial_clientes'];
		$relatorio_visita = $registro['relatorio_visita'];
		$relatorio_venda = $registro['relatorio_venda'];
		$relatorio_ligacoes = $registro['relatorio_ligacoes'];
		$relatorio_agendamento = $registro['relatorio_agendamento'];
		$data_venda_clientes = $registro['data_venda_clientes'];
		$numero_nota_clientes = $registro['numero_nota_clientes'];
		$valor_total_clientes = $registro['valor_total_clientes'];
		$dia_vencimentos_clientes = $registro['dia_vencimentos_clientes'];
		$forma_de_pagamento_clientes = $registro['forma_de_pagamento_clientes'];
		$condicao_de_pagamento_clientes = $registro['condicao_de_pagamento_clientes'];
		$observacoes_financeiro_clientes = $registro['observacoes_financeiro_clientes'];
		$cargo_usuario = $registro['cargo_usuario'];
		$andamento = $registro['andamento'];
		$vendido = $registro['vendido'];
		$reagendamento = $registro['reagendamento'];
		$cancelado = $registro['cancelado'];

      $insert_table  = 'clientes2';  // Nome da Tabela
      $insert_fields = array(
		  	'usuario_clientes'				=> "'$usuario_clientes'",
			'data_clientes'					=> "'$data_clientes'",
			'horario_clientes'				=> "'$horario_clientes'",
			'recepcao_clientes'				=> "'$recepcao_clientes'",
			'sexo_clientes'					=> "'$sexo_clientes'",
			'nome_clientes'					=> "'$nome_clientes'",
			'idade_clientes'				=> "'$idade_clientes'",
			'telefone1_clientes'			=> "'$telefone1_clientes'",
			'telefone2_clientes'			=> "'$telefone2_clientes'",
			'midia_clientes'				=> "'$midia_clientes'",
			'profissao_clientes'			=> "'$profissao_clientes'",
			'estado_civil_clientes'			=> "'$estado_civil_clientes'",
			'email_clientes'				=> "'$email_clientes'",
			'nome_conjuge_clientes'			=> "'$nome_conjuge_clientes'",
			'idade_conjuge_clientes'		=> "'$idade_conjuge_clientes'",			
			'profissao_conjuge_clientes'	=> "'$profissao_conjuge_clientes'",
			'email_conjuge_clientes'		=> "'$email_clientes'",
			'observacao_clientes'			=> "'$observacao_clientes'",
			'endereco_clientes'				=> "'$endereco_clientes'",
			'numero_clientes'				=> "'$numero_clientes'",
			'complemento_clientes'			=> "'$complemento_clientes'",
			'bairro_clientes'				=> "'$bairro_clientes'",
			'cep_clientes'					=> "'$cep_clientes'",
			'cidade_clientes'				=> "'$cidade_clientes'",
			'referencia_clientes'			=> "'$referencia_clientes'",
			'terapeuta_clientes'			=> "'$terapeuta_clientes'",
			'responsavel_visita_clientes'	=> "'$responsavel_visita_clientes'",
			'data_visita_clientes'			=> "'$data_visita_clientes'",
			'horario_visita_clientes'		=> "'$horario_visita_clientes'",
			'status_clientes'				=> "'$status_clientes'",
			'filial_clientes'				=> "'$filial_clientes'",
			'relatorio_visita'				=> "'$relatorio_visita'",
			'relatorio_venda'				=> "'$relatorio_venda'",
			'relatorio_ligacoes'			=> "'$relatorio_ligacoes'",
			'relatorio_agendamento'			=> "'$relatorio_agendamento'",
			'data_venda_clientes'			=> "'$data_venda_clientes'",
			'numero_nota_clientes'			=> "'$numero_nota_clientes'",
			'valor_total_clientes'			=> "'$valor_total_clientes'",
			'dia_vencimentos_clientes'		=> "'$dia_vencimentos_clientes'",
			'forma_de_pagamento_clientes'	=> "'$forma_de_pagamento_clientes'",
			'condicao_de_pagamento_clientes'	=> "'$condicao_de_pagamento_clientes'",
			'observacoes_financeiro_clientes'	=> "'$observacoes_financeiro_clientes'",
			'cargo_usuario'					=> "'$cargo_usuario'",
			'andamento'						=> "'$andamento'",
			'vendido'						=> "'$vendido'",
			'reagendamento'					=> "'$reagendamento'",
			'cancelado'						=> "'$cancelado'",
      );

   // Inserir registro
      $insert_sql = 'INSERT INTO ' . $insert_table
         . ' (' . implode(', ', array_keys($insert_fields)) . ')'
         . ' VALUES (' . implode(', ', array_values($insert_fields)) . ')';

      sc_exec_sql($insert_sql);

      $_Cadastrados++;

    } // Fim: while (!feof($arq))
   
    fclose($arq);
}
ECHO $insert_sql;

if ($_Cadastrados==0) {
    sc_error_message("Não há registros a atualizar, verifique");
} else {
    sc_error_message("Ligações cadastradas: " . $_Cadastrados);
}

{Status}="** Concluído **";

Captura de Tela 2018-01-05 às 20.31.04.png

Coloque sc_commit_trans(); desta forma:

sc_exec_sql($insert_sql);
sc_commit_trans();
Coloque sc_commit_trans(); desta forma:

Código: [Selecionar]
sc_exec_sql($insert_sql);
sc_commit_trans();

Boa noite Kleyber, obrigado pelo apoio, mas infelizmente não houve efeito. Pior é que não dá mensagem de erro alguma… ele processa tudo, diz que inseriu, mas não entra na base…

[code] // Inserir registro
$insert_sql = ‘INSERT INTO ’ . $insert_table
. ’ (’ . implode(’, ‘, array_keys($insert_fields)) . ‘)’
. ’ VALUES (’ . implode(’, ', array_values($insert_fields)) . ‘)’;

  	sc_exec_sql($insert_sql);
	sc_commit_trans();

  $_Cadastrados++;

} // Fim: while (!feof($arq))

[/code]

Há uma coisa estranha que acontece que pode ser algum problema no CSV. Quando importo diretamente pelo PHPMYADMIN, ele insere também o cabeçalho, como se fossem dados. Os delimitadores usados estão corretos, veja em texto o arquivo CSV:

id_clientes;usuario_clientes;data_clientes;horario_clientes;recepcao_clientes;sexo_clientes;nome_clientes;idade_clientes;telefone1_clientes;telefone2_clientes;midia_clientes;profissao_clientes;estado_civil_clientes;email_clientes;nome_conjuge_clientes;idade_conjuge_clientes;profissao_conjuge_clientes;email_conjuge_clientes;observacao_clientes;endereco_clientes;numero_clientes;complemento_clientes;bairro_clientes;cep_clientes;cidade_clientes;referencia_clientes;terapeuta_clientes;responsavel_visita_clientes;data_visita_clientes;horario_visita_clientes;status_clientes;filial_clientes;relatorio_visita;relatorio_venda;relatorio_ligacoes;relatorio_agendamento;data_venda_clientes;numero_nota_clientes;valor_total_clientes;dia_vencimentos_clientes;forma_de_pagamento_clientes;condicao_de_pagamento_clientes;observacoes_financeiro_clientes;cargo_usuario;andamento;vendido;reagendamento;cancelado ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;20001223423;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(48) 99632-2134;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 4648-1263;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 2961-6098;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(71) 3452-0057;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(21) 97524-8471;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(71) 99156-8638;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(85) 98724-6472;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(21) 3038-1016;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(21) 3686-2205;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(31) 3482-0959;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(31) 3225-8087;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(47) 99157-7575;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 5661-8797;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 2057-5227;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(21) 99581-1260;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(24) 2248-1344;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 97543-7288;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 95312-0720;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 4399-1112;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Keila;;importadp;;(11) 95177-8891;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 3854-0149;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 98717-9350;;;;;;;;;;;;;;;;;;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 98318-5768;;;;;;;;;;;;;;;;; ;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;; ;neia-perssinoto;2017/11/14;00:00:00;Neia;;importadp;;(11) 2951-4476;;;;;;;;;;;;;;;;; ;;;1999/01/01;00:00:00;PENDENTE;;0;0;0;0;1999/01/01;;0.00;;;;;;;;;

Deste uma olhada neste tópico aqui: http://www.scriptcase.com.br/forum/index.php/topic,8355.msg40797.html#msg40797 ? Talvez ajude.

Vergonhoso, mas preciso dizer, preciso ser honesto com todos do fórum e principalmente com o Kleyber que me ajudou…
Depois de horas e horas quebrando a cabeça, percebi o meu erro… Eu testava em localhost, recebia a mensagem de Ligações Inseridas, mas eu olhava a base no servidor, por isso não via os dados inseridos. Mil desculpas…

Kleyber, com base no seu código, está funcionando 100%, desculpas pela minha falta de atenção. As vezes está na nossa frente e não vemos o óbvio.

mais uma vez, obrigado e desculpas !!