我想在mysql中導入一個巨大的txt。
這是我第一次嘗試使用php和mysql,所以我不確定問題出在哪裏。
我有一個接近400萬行的文本文件,我需要將它存儲在數據庫中。
我寫PHP的這個PICE做的工作:
超時導入mysql中的巨大txt
$con=mysqli_connect('localhost', 'root', 'root', 'commuting');
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$handle = fopen("matrix_pendo2001.txt", "r") or die("Couldn't get handle");
if ($handle) {
while (!feof($handle)) {
$line = fgets($handle, 4096);
$a = substr($line,0,3);
$b = substr($line,4,3);
$c = substr($line,8,1);
$d = substr($line,10,1);
$e = substr($line,12,1);
$f = substr($line,14,3);
$g = substr($line,18,3);
$h = substr($line,22,3);
$i = substr($line,26,1);
$l = substr($line,28,2);
$m = substr($line,31,1);
$n = substr($line,33,1);
$o = substr($line,35,8);
$sql="INSERT INTO ita (ProvRes, ComRes, Sesso, Motivo, Luogo, ProvLav, ComLav, StatExt, MercPrev, Mezzo, Ora, Tempo, Num)
VALUES
('$a', '$b', '$c', '$d', '$e', '$f', '$g', '$h', '$i', '$l', '$m', '$n', '$o')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "record '<b>" . $line . "'</b> added. <br/>";
}
fclose($handle);
}
mysqli_close($con);
腳本似乎運作良好,但我不能讓所有的行中的分貝。
不到100萬個腳本後腳本沒有明顯的錯誤。
我已將max_execution_time設置爲0,並將memory_limit增加到2048MB,但沒有任何更改。
你通過命令行運行呢? – galchen
不要這樣做。事實上,根本不要使用PHP。查看[MySQL Reference](http://dev.mysql.com/doc/refman/5.6/en/load-data.html)中的'LOAD DATA INFILE'。它會更快,更可靠地完成工作。 – 2013-11-25 22:57:12
set_time_limit(0); – Jompper