Insert registros a partir de arquivo texto

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