【问题标题】:How to export a mySql database to a embedded database (for example H2)?如何将 mySql 数据库导出到嵌入式数据库(例如 H2)?
【发布时间】:2011-05-15 16:47:03
【问题描述】:

我们一直在做一个项目。一开始我们遇到了一些数据库问题,所以我们使用了一个 mySQL-server 数据库来解决这个问题。

现在我们真的应该回到嵌入式数据库,访问是不可能的(必须是跨平台的)

我们的导师建议使用 H2 嵌入式数据库,但如果我们尝试在 H2 的控制台中运行,我们的 sql-dump 会出现语法错误。

有什么想法吗? 提前致谢!

【问题讨论】:

  • 您遇到了哪些语法错误?如果可能,我会尝试修复这些问题(使 SQL 脚本数据库独立)。
  • @Tomas 即使使用 SQLite,您也会遇到语法错误。

标签: mysql database export h2


【解决方案1】:

要在 unix 系统上生成适合 H2 的 SQL 脚本,您可以尝试以下方法:

mysqldump -u root -c --p --skip-opt db_name | sed -e "/^--/d" -e 's/`//g' -e 's/bigint(20)/numeric(20)/g' -e 's/double\(([^(]*)\)/double/' -e 's/int(11)/integer/g' -e '/^\/\*.*\*\//d' -e '/^LOCK TABLES/d' -e '/^\/\*/,/\*\//c\;' -e '/^CREATE TABLE/,/);/{/^  KEY/d; /^  PRIMARY KEY/ s/,$//}' > db.sql

目前不支持所有mysql特定语句的转换,请随意编辑和添加额外的转换。

【讨论】:

    【解决方案2】:

    MySQL 生成的 SQL 脚本是针对 MySQL 运行的。它包含其他数据库不支持的选项和功能。

    related question 中所述,您可以尝试使用compatibility option 创建转储。但您可能仍需要手动修复问题。

    【讨论】:

      猜你喜欢
      • 2020-04-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-05
      • 2013-02-03
      • 1970-01-01
      • 2022-01-20
      • 2012-07-28
      • 2013-06-17
      相关资源
      最近更新 更多