不使用 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 脚本导出到现有的非空数据库中,您有两种选择。
- 在目标数据库中执行
DROP ALL OBJECTS
以使其在执行 RUNSCRIPT FROM
之前清空。这种方式靠谱
- 创建此脚本时使用
SCRIPT DROP …
。它将为您的 table 生成额外的 DROP
命令。如果您只想导出一些 table,您也可以使用 SCHEMA schemaName
或 TABLE tableName
子句。但是,您可能 运行 遇到其他问题,例如序列或其他问题。
如果您需要将现有数据与脚本中的数据合并,则不能这样做。您需要将其导入另一个数据库并从中创建链接的 tables(或在另一个模式下的现有数据库中)和 运行 MERGE INTO tableName USING scriptTableName ON …
每个正确编写的 table 命令例如匹配规则和操作。
有 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 脚本导出到现有的非空数据库中,您有两种选择。
- 在目标数据库中执行
DROP ALL OBJECTS
以使其在执行RUNSCRIPT FROM
之前清空。这种方式靠谱 - 创建此脚本时使用
SCRIPT DROP …
。它将为您的 table 生成额外的DROP
命令。如果您只想导出一些 table,您也可以使用SCHEMA schemaName
或TABLE tableName
子句。但是,您可能 运行 遇到其他问题,例如序列或其他问题。
如果您需要将现有数据与脚本中的数据合并,则不能这样做。您需要将其导入另一个数据库并从中创建链接的 tables(或在另一个模式下的现有数据库中)和 运行 MERGE INTO tableName USING scriptTableName ON …
每个正确编写的 table 命令例如匹配规则和操作。