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