2011-12-19 9 views
1

私は、ライブラリグループが含まれている1つのCSVファイルを持っており、それは...imort CSVデータ

グループは、シートとして考えると、シートごとにフレーズ名とフレーズ値が含まれています...

Iデータですどのようにすることができますmysqlを使用して2つの異なるテーブルにこのCSVデータを挿入したいですか?

は、私がイメージAdditional_medsで抗生物質/警告/ ...ここ

phrase_library_group 
+-------------+--------------+------+-----+---------+----------------+ 
| Field  | Type   | Null | Key | Default | Extra   | 
+-------------+--------------+------+-----+---------+----------------+ 
| GROUP_ID | bigint(20) | NO | PRI | NULL | auto_increment | 
| GROUP_NAME | varchar(100) | NO |  | NULL |    | 
| ------------+--------------+------+-----+---------+----------------+ 

phrase_list 
+-------------+--------------+------+-----+---------+----------------+ 
| Field  | Type   | Null | Key | Default | Extra   | 
+-------------+--------------+------+-----+---------+----------------+ 
| PHRASE_ID | bigint(20) | NO | PRI | NULL | auto_increment | 
| PHRASE_NAME | varchar(100) | NO |  | NULL |    | 
| PHRASE_DESC | varchar(500) | NO |  | NULL |    | 
| GROUP_ID | bigint(20) | NO | MUL | NULL |    | 
| ------------+--------------+------+-----+---------+----------------+ 

のような2台を持っているグループ

であり、各グループが異なるphrases..likeが含まれていAdditional_medsが見るように、合計12件のレコードが含まれていると以下。 file_get_content()ファイルを読むために:enter image description here

+0

MySQLを使用するために特定のIDEを使用していますか? –

+0

yes mysql toad 4.5 – Sweety

答えて

1

は、MySQLでネイティブにそれを実行してくださいより多くのヘルプについては、これは非常に速くなり、より少ないressourcesを消費する必要があります。 あなたとあなたのデータを分割することができた後、すなわち、MySQLの内部でLOAD INFILE声明を経て、このテーブルにすなわち、

LOAD DATA INFILE '~/phrases.csv' INTO TABLE tmp_phrases FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'; 

をCSVから

tmp_phrases 
+-------------+--------------+------+-----+---------+----------------+ 
| Field  | Type   | Null | Key | Default | Extra   | 
+-------------+--------------+------+-----+---------+----------------+ 
| GROUP_NAME | varchar(100) | NO |  | NULL |    | 
| PHRASE_NAME | varchar(100) | NO |  | NULL |    | 
| PHRASE_DESC | varchar(500) | NO |  | NULL |    | 
| ------------+--------------+------+-----+---------+----------------+ 

負荷データを、あなたのCSVからすべてのフィールドを含むMySQLでテーブルを作成します。 2つのINSERTステートメント。

INSERT INTO phrase_library_group (GROUP_NAME) 
    SELECT DISTINCT GROUP_NAME FROM tmp_phrases 

INSERT INTO phrase_list (PHRASE_NAME,PHRASE_DESC,GROUP_ID) 
    SELECT x.PHRASE_NAME,x.PHRASE_DESC,y.GROUP_ID 
    FROM tmp_phrases x 
    INNER JOIN phrase_library_group y ON x.GROUP_NAME=y.GROUP_NAME 
+0

最初の読み込みクエリ最も挿入されていないレコードのみを読み込みます。すべてのデータがありません – Sweety

+0

この 'LOAD'文はファイルからすべての行を取ります。 – rabudde