如何在数据库中解析和插入数据

时间:2016-04-29 12:50:22

标签: php mysql

我有一个包含一些字符串的大文本文件(40mb),文件是这样的:

AN,Aixas|AN,Aixirivall|AN,Aixovall|AN,Andorra la Vella|AN,Ansalonga|AN,Anyos|AN,Arans|

我有一个键(两个字母)和一个值(城市),所以我有一个问题,当我尝试使用此函数在PHP中拆分它时,以及当我尝试在我的数据库中插入数据时。

我在php中使用的功能是:

$file = explode("|", file_get_contents('city.txt'));
$city = explode(",", $file);

foreach ($city as $key => $value)
mysqli_query($mysqli, "INSERT INTO city(name_city, id_city) VALUES ('$key', '$value')");

发生错误:

[29-Apr-2016 14:33:09 Europe/Berlin] PHP Fatal error:  Allowed memory size of 268435456 bytes exhausted (tried to allocate 32 bytes) in /home/mypath on line 6

我认为我的文件处理起来比较大,我如何解析并在数据库中插入数据?

1 个答案:

答案 0 :(得分:0)

我建议你使用mysql加载数据infile:

LOAD DATA LOCAL INFILE '".$file_path."' INTO TABLE your_table
                FIELDS TERMINATED BY '|' 
                LINES TERMINATED BY '\n'
                IGNORE n LINES";

$file_path是文本文件的路径,your_table是表名,n是您希望从文本文件开头忽略的行数。