gpt4 book ai didi

php - 在mysql中导入巨大的txt超时

转载 作者:行者123 更新时间:2023-11-29 08:17:52 25 4
gpt4 key购买 nike

我正在尝试在 mysql 中导入一个巨大的 txt。
这是我第一次尝试使用 php 和 mysql,所以我不确定问题出在哪里。
我有一个几乎有 400 万行的 txt,我需要将其存储在数据库中。
我写了这段 php 来完成这项工作:

$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,并将内存限制增加到 2048MB,但没有任何变化。

最佳答案

我建议你使用LOAD DATA INFILE,这个SQL命令可以直接在服务器中执行,并且可以避免超时,并且是最快的方法,因为在本地主机中运行。

这是一个小例子:

LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test
FIELDS TERMINATED BY ',' LINES STARTING BY 'xxx';

基于这个问题:loading-fixed-width-space-delimited-txt-file-into-mysql您可以尝试这个可能的解决方案:

LOAD DATA LOCAL INFILE 
'/yourfile.txt'
INTO TABLE clip
(@row)
SET a = TRIM(SUBSTR(@row,0,3)),
b = TRIM(SUBSTR(@row,4,3)),
c = TRIM(SUBSTR(@row,10,1)),
......
;

关于php - 在mysql中导入巨大的txt超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20205151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com