我有一个csv文件,其中包含库组及其数据......
组视为工作表,每张工作表包含短语名称和短语值...
我想使用mysql将这个csv数据插入到两个不同的表中,我该怎么办?
假设我有2个表
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 | |
| ------------+--------------+------+-----+---------+----------------+
此处图片Additional_meds /抗生素警告/ ...是小组
并且每个小组包含不同的短语..类似Additional_meds包含总共12条记录,如下所示。
csv,如
答案 0 :(得分:1)
在MySQL本地执行,这应该更快,消耗更少的资源。 在MySQL中创建一个包含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 | |
| ------------+--------------+------+-----+---------+----------------+
通过MySQL内的LOAD INFILE
语句将数据从CSV加载到此表中,即
LOAD DATA INFILE '~/phrases.csv' INTO TABLE tmp_phrases FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"';
之后,您可以使用两个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
答案 1 :(得分:0)
使用:file_get_content()来读取文件。
使用:explode()解析数据,从而获取数组,然后使用你正在使用的任何mysql函数/类进行插入。
请参阅:https://stackoverflow.com/questions/8134967/insert-comma-separated-records-in-table/8135024#8135024 - 有关更多帮助