不使用 alter 语句创建 h2 备份

Create h2 backup without alter statements

H2 的特定语句 Script,我用它来创建没有任何数据的 sql 文件:

script NODATA to 'db.sql'

但我找不到一个选项来表示我不想更改语句。我会将此选项命名为 'ONLYDATA'。 我想创建 sql 文件而没有像 'create table, create sequence, alter table...' 这样的语句,但只有插入语句。

我想要这个是因为我想在现有数据库上加载数据,该数据库已经有一些数据,并且 sql 带有创建语句的脚本在它上面失败

H2 有 BACKUP TO 'filename.zip' 在线备份命令。 SCRIPT 也可以用于此目的(如果您需要将数据移动到另一个版本的 H2,则应该使用),但它不是备份命令,而是数据导出命令。

如果您想将 SQL 脚本导出到现有的非空数据库中,您有两种选择。

  1. 在目标数据库中执行 DROP ALL OBJECTS 以使其在执行 RUNSCRIPT FROM 之前清空。这种方式靠谱
  2. 创建此脚本时使用 SCRIPT DROP …。它将为您的 table 生成额外的 DROP 命令。如果您只想导出一些 table,您也可以使用 SCHEMA schemaNameTABLE tableName 子句。但是,您可能 运行 遇到其他问题,例如序列或其他问题。

如果您需要将现有数据与脚本中的数据合并,则不能这样做。您需要将其导入另一个数据库并从中创建链接的 tables(或在另一个模式下的现有数据库中)和 运行 MERGE INTO tableName USING scriptTableName ON … 每个正确编写的 table 命令例如匹配规则和操作。