【问题标题】:Symfony-Doctrine best way to import data from different databasesSymfony-Doctrine 从不同数据库导入数据的最佳方式
【发布时间】:2018-01-30 10:56:42
【问题描述】:

我正在使用 Symfony 3.4,我需要每天将一些数据从一个表导入到另一个表。 源表存储在 SQL Server 的数据库中。 目标表存储在 MySql DB 中。

实现这一点的最佳方法是什么? 我正在考虑使用 cron 执行导入的命令,但我不知道我是否应该使用 Doctrine Entities 或 SQL 并将数据存储在数组中,然后将其复制到目标表中......有什么建议吗?谢谢

【问题讨论】:

  • 您每天要迁移多少行?如果可能,最好保留教义实体以保持对象一致性。但是,如果您每天要迁移很多行,则可以使用本机 SQL 查询来提高性能并避免学说实体水合过程:)
  • 除了@Mcsky docs.doctrine-project.org/projects/doctrine-orm/en/latest/…(您可以将其发布为答案)
  • 在使用大量数据的学说时,必须使用 @goto 批处理
  • @Mcsky 大约有 6k 行。我认为 goto 建议是我的解决方案,我会尝试让您知道!非常感谢!

标签: mysql symfony doctrine-orm


【解决方案1】:

一般来说最好使用学说实体,因为它们有你的业务规则(例如带有一些逻辑的自定义方法)

此外,您可以使用EntityManager->createNativeQuery(...) 部分加载实体,只选择您需要的属性/关系,因此学说水合过程将占用更少的内存。

正如@goto 在评论中提到的那样,batch process 是操纵大量学说实体时的关键(没有它会占用大量内存)

没有一种好的解决方案取决于您每天必须迁移多少行。如果您必须处理非常庞大的数据集,您可以考虑使用原生 SQL 查询来简单地填充数组以提高性能。

希望对你有帮助:)

【讨论】:

    猜你喜欢
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多