【问题标题】:How to use load data Infile to insert into multiple tables?如何使用加载数据 Infile 插入多个表?
【发布时间】:2018-09-27 03:16:17
【问题描述】:

我使用一个 python 程序向数据库中插入许多新条目, 这个新条目分布在多个表中。

我是使用load data infile来加载文件的,但是这个方案只针对一张表,我不想多次这样做。

我找到了 http://forge.mysql.com/worklog/task.php?id=875 这个,但我不是很清楚 确定它是否已经实现。

【问题讨论】:

    标签: mysql bulkinsert


    【解决方案1】:

    我正在做你正在尝试做的事情,如下所示:

    第一步:创建一个临时表(保存导入文件的所有字段)

    第 2 步:将 DATA LOCAL INFILE -> 加载到临时表中

    第 3 步:INSERT INTO Table1 (fieldlist) SELECT FROM TempTable (matching fieldlist) ... 包括 JOINS, WHERE,并根据需要进行主键更新

    第 4 步:对第二个表插入查询重复第 3 步,依此类推。

    使用这种方法,我目前正在导入我的每个 22MB 数据文件,并将它们解析为多个表(6 个表,包括 2 个审计/更改表)

    不知道你的表结构和数据文件结构很难给你更详细的解释,但我希望这能帮助你入门

    【讨论】:

    • 附带说明,这不是一次性解决方案,您将为要更新的每个表在临时表上创建 1 个(或更多)查询。在我的情况下,我为每个表创建了一个,对于我的审计表,我为我正在审计的每个表列创建了一个查询。我的 22 兆数据文件的处理速度不到 15 秒,将 30000 条记录处理成 6 个表(8 个插入查询)。我不知道这是否是一个很好的速度,但在我看来,我对这个速度非常满意。
    【解决方案2】:

    尚不支持从本地文件加载数据以在多个表中插入新数据 (v 5.1)

    【讨论】:

      【解决方案3】:

      我不认为LOAD DATA 可以做到这一点,但是为什么不导入后复制表呢?

      【讨论】:

      • 那些新数据我试图写入 mysql 表而不是已经在表中......所以复制表不起作用
      猜你喜欢
      • 2020-03-03
      • 2013-02-20
      • 2011-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 2019-07-11
      • 2011-01-28
      相关资源
      最近更新 更多