【发布时间】:2010-10-28 13:52:31
【问题描述】:
有什么方法可以将数据库(如 MS SQL、MySQL)中的数据导入内存数据库(如 HSQLDB、H2 等)?
【问题讨论】:
标签: mysql sql-server database import hsqldb
有什么方法可以将数据库(如 MS SQL、MySQL)中的数据导入内存数据库(如 HSQLDB、H2 等)?
【问题讨论】:
标签: mysql sql-server database import hsqldb
我认为你需要这样做
从 MS SQL 中查询数据
使用 API 将数据导入内存数据库
SQL 表达式或 DB 相关 API
【讨论】:
您可以将数据转储为 SQL INSERT 语句,然后将其读回。
您可以读取临时对象(如结构),然后写回内部数据库。
【讨论】:
看看免费的“通用数据库转换器”http://eva-3-universal-database-converter-udc.optadat-com.qarchive.org/——它确实声称支持 MySQL、MS-SQL 和 HSQLDB 等。
【讨论】:
这真的取决于你的想法。 是否有无需编程即可自动完成的工具?也许吧。
你想开发它吗?然后找出您最喜欢的语言是否同时支持数据库引擎(标准和内存),如果支持,只需编写一个脚本即可。 分块处理所有内容(一次获取 n 行,然后插入它们;重复)。块大小有多大?这取决于你,尝试不同的尺寸(比如 100、500、1k 等)看看哪一个在你的硬件上表现更好,微调到最佳位置。
另一方面,如果您最喜欢的语言不支持这两种语言,请尝试使用支持的语言。
【讨论】:
您可以使用dbunit 将数据库转储为 xml 文件并将其导入回另一个 rdbms。
【讨论】:
在 Hibernate 中:将 import.sql 添加到类路径效果很好,hbm2dll 检查文件是否存在并执行它。唯一的细节是每个sql命令最多在一行,否则会执行失败
【讨论】:
H2支持initialized the database from a SQL script file的特殊数据库URL:
"jdbc:h2:mem;INIT=RUNSCRIPT FROM '~/create.sql'"
据我所知,HSQLDB 和 Apache Derby 不支持这样的功能。
【讨论】:
最新版本的 HSQLDB 允许您在 HSQLDB 中将 CSV(逗号分隔值)或其他分隔符分隔的数据文件作为 TEXT TABLE 打开,即使使用 mem: 数据库,也可以将其复制到其他表中。
正如其他人指出的那样,也有功能强大且维护良好的第三方工具可用于此目的。
【讨论】: