【问题标题】:Sqlalchemy - copy data from a database to another database with exactly same schemaSqlalchemy - 将数据从数据库复制到具有完全相同架构的另一个数据库
【发布时间】:2017-06-23 11:50:13
【问题描述】:

我在 2 台 docker 机器中有 2 个 mysql 数据库与 sqlalchemy 连接。

它们内部都有相同的架构和数据。

现在我想将数据库1中的数据复制到另一个数据库中以将2个mysql数据库合并为1。可以这样做吗?

【问题讨论】:

    标签: python mysql sqlalchemy


    【解决方案1】:

    是的,您可以:

    在您要复制的数据库上运行:

    mysqldump --no-create-info {yourdbname} > {yourdbname}.sql
    

    然后在你要导入的数据库上:

    mysql {yourdbname} < {yourdbname}.sql
    

    您可能会遇到与主键和/或重复记录有关的问题。遗憾的是,从那时起,您将不得不生成 SQL 以使用更改的主键导出数据,同时保持外键关系不变。

    第二个复杂问题需要一个过程来查询信息架构:

    • 从信息架构中选择表名
    • 使用信息架构选择主键
    • 为每个表选择最大(主键)。
    • 使用信息架构创建 SELECT 查询,您可以在其中将之前的 max(primary key) 添加到主键,并将输出写入数据文件。

    在相关的外键上,您还必须从相关表中添加相同的最大(主键)值。 代码会多一些,但 50-80 行的存储过程应该可以完成。

    【讨论】:

    • 在我的情况下是否有可能,因为我在 2 台 docker 机器中有 2 个数据库
    • 严重依赖你的数据。
    • mysqldump 将创建一个文件调用 {mydatabase}.sql 然后我可以将该文件带到另一台 docker 机器并执行您所说的第二个命令。对吗?
    • 是的。我想我会面临重复的主键问题,因为列有重复的 id。这样做的好策略是什么?
    • 看我的更新(你必须写一点代码来解决这个问题,但可以做到)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-17
    • 2017-04-06
    • 1970-01-01
    相关资源
    最近更新 更多