2016-04-29 2 views
0

データベースにデータを挿入する方法、ファイルは次のようである:は、解析し、いくつかの文字列が含まれています、私は大きなtxtファイル(40メガバイト)を持っている

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

私は、キー(2文字)と値を持っています(都市)、私は問題を抱えているので、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 

を私は私のファイルは、私が解析し、私の挿入することができますどのように処理することがより大きいことを考えます私のデータベースのデータですか?

+2

LOAD DATA INFILEの使用http://dev.mysql.com/doc/refman/5.7/en/load-data.html –

+0

または、データを挿入してファイルを作成することもできます。https://dev.mysql.com/doc /refman/5.7/en/mysql-batch-commands.html – Iwan

答えて

0

私はあなたがMySQLのLOAD DATA INFILEを使用をお勧めします:

$file_pathは、テキストファイル、 your_tableのパスです
LOAD DATA LOCAL INFILE '".$file_path."' INTO TABLE your_table 
       FIELDS TERMINATED BY '|' 
       LINES TERMINATED BY '\n' 
       IGNORE n LINES"; 

をテーブル名とnあなたは最初から無視したい行数ですテキストファイルの。

関連する問題