【问题标题】:How to import data to an in-memory database?如何将数据导入内存数据库?
【发布时间】:2010-10-28 13:52:31
【问题描述】:

有什么方法可以将数据库(如 MS SQL、MySQL)中的数据导入内存数据库(如 HSQLDB、H2 等)?

【问题讨论】:

    标签: mysql sql-server database import hsqldb


    【解决方案1】:

    我认为你需要这样做

    1. 从 MS SQL 中查询数据

    2. 使用 API 将数据导入内存数据库

    SQL 表达式或 DB 相关 API

    【讨论】:

      【解决方案2】:

      您可以将数据转储为 SQL INSERT 语句,然后将其读回。

      您可以读取临时对象(如结构),然后写回内部数据库。

      【讨论】:

        【解决方案3】:

        看看免费的“通用数据库转换器”http://eva-3-universal-database-converter-udc.optadat-com.qarchive.org/——它确实声称支持 MySQL、MS-SQL 和 HSQLDB 等。

        【讨论】:

        • 它们仅支持 MySQL 3.23 :)
        【解决方案4】:

        这真的取决于你的想法。 是否有无需编程即可自动完成的工具?也许吧。

        你想开发它吗?然后找出您最喜欢的语言是否同时支持数据库引擎(标准和内存),如果支持,只需编写一个脚本即可。 分块处理所有内容(一次获取 n 行,然后插入它们;重复)。块大小有多大?这取决于你,尝试不同的尺寸(比如 100、500、1k 等)看看哪一个在你的硬件上表现更好,微调到最佳位置。

        另一方面,如果您最喜欢的语言不支持这两种语言,请尝试使用支持的语言。

        【讨论】:

          【解决方案5】:

          您可以使用dbunit 将数据库转储为 xml 文件并将其导入回另一个 rdbms。

          【讨论】:

            【解决方案6】:

            在 Hibernate 中:将 import.sql 添加到类路径效果很好,hbm2dll 检查文件是否存在并执行它。唯一的细节是每个sql命令最多在一行,否则会执行失败

            【讨论】:

              【解决方案7】:

              H2支持initialized the database from a SQL script file的特殊数据库URL:

              "jdbc:h2:mem;INIT=RUNSCRIPT FROM '~/create.sql'"
              

              据我所知,HSQLDB 和 Apache Derby 不支持这样的功能。

              【讨论】:

                【解决方案8】:

                最新版本的 HSQLDB 允许您在 HSQLDB 中将 CSV(逗号分隔值)或其他分隔符分隔的数据文件作为 TEXT TABLE 打开,即使使用 mem: 数据库,也可以将其复制到其他表中。

                正如其他人指出的那样,也有功能强大且维护良好的第三方工具可用于此目的。

                【讨论】:

                  猜你喜欢
                  • 2022-06-17
                  • 1970-01-01
                  • 2015-05-21
                  • 2014-10-28
                  • 2018-08-26
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多