0

我有一个关于导入长 csv 表然后转换为两个表以提高效率的最佳方法的问题。这是一个非常缩小的版本,但为此目的适合:

每一行都是唯一的记录,但前三列包含大量行的非常一致的数据。

我认为管理这些数据的最佳方法是构建两个表:

第一个是自动增量 id 字段和前三列的 group by。

这为我的数据的主要分组提供了一个很好的紧凑表。

第二个表是每一行,但不是保存所有重复的数据,而是只保存可变数据列 d、e 和 f 以及我在导入第一个表时生成的自动增量 id 字段。

我的问题实际上是如何从第一个表中获取 id - 是我重新查询该表以找到 id 然后插入到第二个表中的唯一方法吗?

a,b,c,d,e,f

09/02/2013,A1,1,18503112043123,11,2.1219
09/02/2013,A1,1,44102576116476,73,14.0817
09/02/2013,A1,1,66918345446536,134,25.8486
09/02/2013,A1,2,62009507978229,10,1.929
09/02/2013,A1,2,92278593945574,55,10.6095
09/02/2013,B1,1,50474606002324,90,17.361
09/02/2013,B1,1,59697581427675,7,1.3503
09/02/2013,B1,1,86298530583467,51,9.8379
09/02/2013,B1,2,34885481077847,80,15.432
09/02/2013,B1,2,25479347211047,164,31.6356
09/02/2013,B1,3,56270556524425,6,1.1574
09/02/2013,C1,1,57680166803098,24,4.6296
09/02/2013,C1,1,72778510788287,77,14.8533
09/02/2013,C1,1,26084111080146,140,27.006
09/02/2013,C1,1,31435464483578,361,65.5937
09/02/2013,C1,2,29457756254473,492,89.3964
09/02/2013,C1,2,68414218104066,293,53.2381

编辑

我有两个查询: 1:我的父表具有自动增量插入到 parent_table 选择 null,a,b,c 从表组中由 a,b,c

  1. 我的子表是我所有的数据行,但包含父表中相应的自动增量 ID。

当我将数据输入到子表中时,我不明白如何在不查询父表的情况下再次拉回 id

4

1 回答 1

1

您可以使用PDO::lastInsertIdmysqli::$insert_id来检索

上次查询中使用的自动生成的 ID。

只需执行插入,然后获取 id

$sth = $pdo->prepare("insert into first_table (a, b, c) values (?, ?, ?)");
$sth->execute(array('2013-02-09', 'A1', 1));
$id = $pdo->lastInsertId();

还有 MySQL LAST_INSERT_ID()。你可以测试

insert into second_table (first_table_id, d, e, f) values (LAST_INSERT_ID(), ...)

但我自己从未尝试过。

于 2013-02-14T14:11:20.360 回答