2011-08-13 16 views
0

私はcsvファイルに118350行含まれています、私はデータベーステーブルの各行を保存したい、私は配列内のファイル全体を読み込んで、私のデータベースにファイルの内容を保存するために、私はPHPプログラムを持っていますが、問題は1度に927行しか保存しないので、PHPのスクリプトを何度も実行してデータベースに保存する必要があります。ファイルのデータをPHPのmysqlデータベースに保存

私のPHPコードは、---

<?php 
    $connection = mysql_connect('localhost', 'user', 'password') or die(mysql_error($connection)); 
    $select_db = mysql_select_db('dbname', $connection) or die(mysql_error($connection)); 

    $file = file('ip-to-country.csv'); 
    $data = str_replace("\"", "", $file, $j); //for removing ' " ' charactor from string 
    $i = 0; 
    for ($i = 0; $i < count($data); $i++) { 
     $content = explode(',', $data[$i]); 
     $ins = "insert into iplocation (startiprang,endiprang,concode,concode3,country) values ($content[0],$content[1],'$content[2]','$content[3]','$content[4]')"; 
     $result = mysql_query($ins, $connection); 
    } 
    echo "done"; 
?> 

は、限定されないが、アレイ内のすべてのファイルのデータを格納することができる任意の関数があります。 myfileのサイズは約6 MBです。事前に感謝しています.......私はあなたが私が欲しいものを理解することを願って...事前に感謝します。

+1

は、MySQLの負荷データの構文を見てみましょう。ずっと速くて簡単です。 csvのサンプル(数行)と、おそらくshow create table iplocationの出力を投稿すると、正しい構文が書かれます。 –

答えて

0

実際これはPHPの問題ではありません。これは、MySQLでLOAD DATA commandを使用すると簡単に解決できます。それは次のようになります:

LOAD DATA INFILE LOCAL '\var\tmp\test.csv' INTO TABLE sometable FIELD TERMINATED BY ';' LINES TERMINATED BY '\n' (column1, column2); 

しかし、あなたが本当にPHPでそれを解決したいならば、単に各CSV行のためにそれにINSERTコマンドでSQLファイルを作成し、mysqlクライアントでそれを実行します。

1

あなたはこのcsvファイルに

http://ip-to-country.webhosting.info/node/view/6

を使用している場合は、この方法で行うことができます。

create table iplocation (
id int not null auto_increment primary key, 
startiprang int unsigned, 
endiprang int unsigned, 
concode varchar(50), 
concode3 varchar(50), 
country varchar(150) 
) engine = myisam; 

load data infile 'c:/ip-to-country.csv' 
into table iplocation 
fields terminated by ',"' 
(@startiprang,@endiprang,@concode,@concode3,@country) 
set 
startiprang = replace(@startiprang,'"',''), 
endiprang = replace(@endiprang,'"',''), 
concode = replace(@concode,'"',''), 
concode3 = replace(@concode3,'"',''), 
country = replace(@country,'"','') 
+0

LOCALキーワードを忘れていませんか? – WASD42

+0

コンテストは分かりません。彼は自分のニーズに容易に適応することができます。自分のコンピュータに投稿する前に自分のコードをテストしました。 :) –

+0

これは、同じマシンでmySQLサーバーとクライアントを実行する場合にのみ機能します。] – WASD42

関連する問題