MySQL LOAD DATA 到两个相关表中
Posted
技术标签:
【中文标题】MySQL LOAD DATA 到两个相关表中【英文标题】:MySQL LOAD DATA into two related tables 【发布时间】:2014-02-05 22:42:29 【问题描述】:在 mysql 查询中,在我们执行 LOAD DATA 语句之后,是否可以获取最后插入的 ID 用于其他表的 LOAD DATA 中?一般来说,是否可以将 LOAD DATA 用于 2 个相关表?
【问题讨论】:
【参考方案1】:没有。使用 LOAD DATA INFILE
语法是不可能的。 (LAST_INSERT_ID()
函数只返回一个值,而不是一组行的值,所以除非您插入单独的行,在这种情况下,您不会期望 LOAD DATA INFILE
会用于插入单独的行.)
解决方法(如果我理解您想要完成的任务)是使用中间表作为负载的目标。截断表(或删除并重新创建),并使用 LOAD DATA INFILE 加载行。
然后,使用 SQL 语句从该表中提取数据,并插入/更新其他表。如果您没有其他唯一键,则在中间表中包含 AUTO_INCREMENT id 列是关联行的便捷方式。
【讨论】:
是的,你是对的。我应该先解析 CSV,然后在循环内执行单个 mysql 插入以获取最后插入的 ID。【参考方案2】:例如,如果我们运行以下插入语句:
mysql_query("INSERT INTO mytable (name,age) VALUES ('Steve',25)") or die(mysql_error());
使用这个函数我们总能得到最后插入的id
mysql_insert_id();
所以我们可以通过这种方式将 id 移动到另一个表中
$last_id = mysql_insert_id();
mysql_query("INSERT INTO mytable2 (uid) VALUES('".$last_id."')") or die(mysql_error());
【讨论】:
谢谢。我应该这样做。以上是关于MySQL LOAD DATA 到两个相关表中的主要内容,如果未能解决你的问题,请参考以下文章
IF ELSE inside Load data infile mysql