我有一个包含库组及其数据的 csv 文件...
组视为工作表,每个工作表包含短语名称和短语值...
我想使用 mysql 将此 csv 数据插入到两个不同的表中,我该怎么做?
假设我有两张 table
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/Antibiotic Warnings/... 是组
并且每个组包含不同的短语..like Additional_meds 包含总共 12 条记录,如下所示。
csv 类似
最佳答案
在 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
关于mysql - 导入CSV数据到Mysql表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8561341/