【发布时间】:2015-08-05 12:13:06
【问题描述】:
我正在尝试将大量数据插入 Oracle SQL DB,执行以下操作...
foreach ($service as $valor) {
$j=0;
foreach($fechahorainf as $fecha){
$i=0;
$consulta="INSERT INTO PRUEBA_SMS(FECHAHORAINF,SERVICIO,VALOR) VALUES (TO_DATE('".$fecha."','DD/MM/YYYY hh24:mi:ss'),'".$valor."','".$data[$j][$i]."')";
$stmt = oci_parse($conexion, $consulta);
oci_execute($stmt,OCI_DEFAULT);
$i++;
}
oci_commit($conexion);
oci_free_statement($stmt);
$j++;
}
注意count($j)=count($service)=30 和count($i)=count($fechahorainf)=720
这里的重点是我要插入 21600 行,这需要很多时间。
有没有提高速度的小窍门?
更新:我尝试了大安和城墙通过这种方式建议的 LOAD DATE INFILE:
$consulta="LOAD DATA LOCAL INFILE 'files/data.csv' INTO TABLE PRUEBA_SMS FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n' (FECHAHORAINF,NODO,SERVICIO,VALOR)";
$stmt=oci_parse($conexion, $consulta);
oci_execute($stmt);
但我在没有太多信息的情况下收到此警告...
Warning: oci_execute(): in C:\PATH_TO_ARCHIVE.php on line 160
问候!
【问题讨论】:
-
创建一个 .txt 文件并将插入语句放入其中然后执行
LOAD DATA INFILE -
命令
LOAD DATA INFILE是否适用于Oracle DB?因为我读到它是 MySQL... -
那么,我只需要更改
$consulta变量以指向我的完整本地文本文件吗?我试试看,谢谢!
标签: php sql oracle oracle-call-interface