我想要的是在mysql表中插入数据,但是我找不到从一行建立关系的方法
假设我有一个文件file.tab,其中包含类似的数据
parent_1 parent_details_1 child_1.1 child_details_1.1 child_1.2 child_details_1.2
parent_2 parent_details_2 child_2.1 child_details_2.1
parent_3 parent_details_3 child_3.1 child_details_3.1 child_3.2 child_details_3.2 child_3.3 child_details_3.3
我要达到的目标是在两个表中插入数据
parent_table
+---+-----------+-------------------+
|id | name | details |
+---+-----------+-------------------+
| 1 | parent_1 | parent_details_1 |
| 2 | parent_2 | parent_details_2 |
| 3 | parent_3 | parent_details_3 |
+---+-----------+-------------------+
child_table
+---+-----+-----------+-------------------+
|id | pid | name | details |
+---+-----+-----------+-------------------+
| 1 | 1 | child_1.1 | child_details_1.1 |
| 2 | 1 | child_1.2 | child_details_1.2 |
| 3 | 2 | child_2.1 | child_details_2.1 |
| 4 | 3 | child_3.1 | child_details_3.1 |
| 5 | 3 | child_3.2 | child_details_3.2 |
| 6 | 3 | child_3.3 | child_details_3.3 |
+---+-----+-----------+-------------------+
前两列是父母的,其后两列是孩子的,但我不知道父母有多少孩子。
我试图以这种方式加载文件。
LOAD DATA INFILE '/tmp/file.tab INTO TABLE ...
但是接下来我该怎么办呢。
请在这个问题上帮助我。
创建一个Staging
包含许多列的表()。子项的ID为空(NULL
)列parent_id
。
希望“短”行将在期间将缺失的子项列中包含空值LOAD DATA
。
INSERT .. SELECT ..
获得parent
和parent_detail
成Parents
表。拉回ids
从Parents
成Staging.parent_id
。有关这两个SQL的详细信息,请参见http://mysql.rjweb.org/doc.php/staging_table#normalization
现在,对每个可能的“子”列集执行类似的操作:child1
和child1_detail
(可能为NULL对)和当前的NULL child1_id
。child2 *的同上,等等。请注意,在填充Children
表时,您已经可以parent_id
使用。
这是完成任务的全SQL方法。它只比编写Perl / PHP / Java / VB /执行任何任务的代码少一点混乱。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句