【问题标题】:mixing auto_increment and non in mySQL在 mySQL 中混合 auto_increment 和 non
【发布时间】:2010-02-18 09:32:05
【问题描述】:

我有一组表,其中每个表的 ID 键都是 auto_incrementing。现在我的用户想要从单个 csv 平面文件中导入一堆具有不同键的外部数据。

我认为最好的方法是锁定表,为每个表获取 auto_increment 列的下一个值,然后对于我插入的每一行,只需将现有主键换成新的 AI 值。这将变得非常难看,因为要导入的数据有多个表和多个键关系。

关于如何处理此类问题的任何其他想法?可能是存储过程?感谢您的任何想法。

【问题讨论】:

  • 这是否会再次发生?然后再次?然后再次?如果是,您最好编写一个存储过程,负责将数据(从 CSV 文件)写入系统中使用的表中。通过这种方式,您可以集中创建记录所需的任何逻辑并通过外键正确连接它们(您的数据库可能会发展,而 CSV 将保持静态,或者两者都以不同的方式发生变化)。

标签: mysql auto-increment import-from-excel


【解决方案1】:

向您要导入的名为 old_key 的表添加一个新字段,将 csvs 导入临时表,然后执行类似的操作

insert into mytable(firstname, lastname, old_key) 
select fname, lname, old_key from temp_table

自动递增的 mytable_id 字段将正常工作,现在您将拥有 old_key 和一个新的 mytable_id,可用于映射其他外键关系。工作完成后您可以删除临时表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    • 2021-01-15
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多