Insert massivo em banco Oracle
Prezados, bom dia.
Depois de estar afastado há bastante tempo do fórum, me vi obrigado a vir solicitar o auxílio de vcs.
Necessidade:
Incluir um número grande de informações em um banco Oracle.
Problema:
Não estou conseguindo utilizar prepared statements devido à variação do número de registros a serem inseridos.
Solução tentada:
Gerar o SQL a ser executado, incluindo as variáveis na string, através de um for.
Essa solução foi barrada pela equipe de Segurança devido à fragilidade quanto a ataques de sql injection.
Abaixo o trecho do código:
$registros = explode('@|', $tratamento);
$sql = 'INSERT INTO owner.tabela (id, cod, documento, dt_inclusao, usuario) SELECT null, null, null, null, null FROM dual ';
for ($i = 0; $i < count($registros); $i++) {
if($tipo == 'cod') {
$cod = $registros[$i];
$doc = NULL;
} else {
$cod = NULL;
$doc = $registros[$i];
}
$sql .= "UNION ALL SELECT ?, ?, ?, ?, ? FROM dual ";
if ($i % $lotes == 0 || $i == 0 || $i == count($registros)-1) {
$stmt = $dbh->prepare($sql);
$stmt->bindParam((1, $hash, PDO::PARAM_STR);
$stmt->bindParam((2, $cod, PDO::PARAM_INT);
$stmt->bindParam((3, $doc, PDO::PARAM_STR);
$stmt->bindParam((4, $data, PDO::PARAM_STR);
$stmt->bindParam((5, $usuario, PDO::PARAM_STR);
$stmt->execute();
$sql = 'INSERT INTO owner.tabela (id, cod, documento, dt_inclusao, usuario) SELECT null, null, null, null, null FROM dual ';
}
}
echo $hash;
Qualquer auxílio será mto bem vindo.Discussão (0)
Carregando comentários...