【问题标题】:How do you add sqlite3 file to a ruby on rails populated database?如何将 sqlite3 文件添加到 ruby​​ on rails 填充数据库?
【发布时间】:2012-06-06 19:45:49
【问题描述】:

我有一个 Ruby on Rails 应用程序,其中包含一个填充了程序的数据库。我还有一个 sqlite3 数据库,它几乎与 RoR 应用程序中的数据库完全相同(没有创建、更新)。我想将 sqlite3 数据库导入 Rails 应用程序(而不是使用 database.yml 文件,结合两个数据库),经过大量谷歌搜索,我不知道如何以及在哪里执行此操作。我会在哪个文件中执行此操作,最好的方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby sqlite


    【解决方案1】:

    低技术含量的方法是将您的 SQLite 数据库转储为您可以导入其他数据库的内容。 MySQL 有LOAD DATA INFILE,它非常灵活,如果配置正确,甚至可以读取 CSV 文件,所以这可能是一个简单的方法。

    通常,我发现最好按原样导入外部表,但要转换名称,以便将它们识别为非本地表。例如,在它们前面加上 _import 以明确它们不是常规模式的一部分。然后,您可以使用一系列执行重新映射的语句从这些表迁移到本地表:

    INSERT INTO foo (x,y) SELECT (x,y) FROM _import_foo
    

    这样可以很容易地解决缺少的列或名称的细微差别。如果需要,您还可以对特定列执行转换。

    与往常一样,请确保在开始此操作之前拥有数据库的快照,因为取消合并通常很棘手。

    另一种方法是同时创建两个数据库连接,并在两者之间传递数据,一侧使用SELECT,另一侧使用INSERT INTO

    【讨论】:

    • 谢谢。我一直在寻找 Active Record 解决方案,但这很好用。使用 SQLite 管理器,我将外部数据库表导出到 .sql,将其作为表的副本导入我也尝试导入它,然后使用您提供的语句将数据插入到原始表中。
    • 当做这样一次性的事情时,通常最好不要用永远不会再次使用的无关代码使您的应用程序混乱。技术含量低且可靠的方法通常是最好的。很高兴听到它对你有用。
    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-11
    • 2015-07-16
    相关资源
    最近更新 更多