命令 - EXPORT

导出当前数据库到文件。OrientDB使用基于JSONExport Format。默认,用GZIP算法压缩文件。

使用IMPORT命令,允许你在不同版本的OrientDB之间迁移数据,不会丢失数据。

如果你收到一个关于数据库版本的错误,还是产生这个数据库的OrientDB的版本导出数据库。

牢记,导出一个数据库只是浏览而不会锁住。尽管这意味着导出的时候可以并发执行其他操作,但是不可能创建一个命令执行时的时间点的副本。这种情况下,你可以创建一个快照,使用命令BACKUP

你可以从一个导出的文件恢复数据库,使用命令IMPORT

注意: 尽快导出的格式是JSON,但对字段的顺序有约束。编辑导出的文件或者调整缩进都会导致导入时出错。

语法

默认,命令导出整个数据库。使用选项可以设置导出那部分。

EXPORT DATABASE <output-file>
      [-excludeAll]
      [-includeClass=<class-name>*]
      [-excludeClass=<class-name>*]
      [-includeCluster=<cluster-name>*]
      [-excludeCluster=<cluster-name>*]
      [-includeInfo=<true|false>]
      [-includeClusterDefinitions=<true|false>]
      [-includeSchema=<true|false>]
      [-includeSecurity=<true|false>]
      [-includeRecords=<true|false>]
      [-includeIndexDefinitions=<true|false>]
      [-includeManualIndexes=<true|false>]
      [-compressionLevel=<0-9>]
      [-compressionBuffer=<bufferSize>]
  • <output-file> 定义输出文件的路径。
  • -excludeAll 设置导出的时候排除所有的内容,只导出通过命令选项包含的内容
  • -includeClass 导出时包含指定的类,以空格分隔。
  • -excludeClass 导出时排除指定的类,以空格分隔。
  • -includeCluster 导出时包含指定的簇,以空格分隔。
  • -excludeCluster 导出时排除指定的簇,以空格分隔。
  • -includeInfo 定义是否导出数据库信息。
  • -includeClusterDefinitions 定义是否导出簇的定义。
  • -includeSchmea 定义是否导出数据库的模式信息。
  • -includeSecurity 定义是否导出数据库的安全参数。
  • -includeRecords 定义是否导出记录内容。
  • -includeIndexDefinitions 定义是否导出索引的定义。
  • -includeManualIndexes 定义是否导出人为设定的索引内容。
  • -compressionLevel 定义导出时的压缩级别,0(不压缩)到9 (最大压缩)。默认是1。(版本1.7.6引入)
  • -compressionBuffer 定义压缩时使用的缓存大小(字节)。默认16kb. (版本1.7.6引入)

例子

  • 导出当前数据库,包含所有内容:

    orientdb> EXPORT DATABASE C:\temp\petshop.export
    
    Exporting current database to: C:\temp\petshop.export...
    
    Exporting database info...OK
    Exporting dictionary...OK
    Exporting schema...OK
    Exporting clusters...
    - Exporting cluster 'metadata' (records=11) -> ...........OK
    - Exporting cluster 'index' (records=0) -> OK
    - Exporting cluster 'default' (records=779) -> OK
    - Exporting cluster 'csv' (records=1000) -> OK
    - Exporting cluster 'binary' (records=1001) -> OK
    - Exporting cluster 'person' (records=7) -> OK
    - Exporting cluster 'animal' (records=5) -> OK
    - Exporting cluster 'animalrace' (records=0) -> OK
    - Exporting cluster 'animaltype' (records=1) -> OK
    - Exporting cluster 'orderitem' (records=0) -> OK
    - Exporting cluster 'order' (records=0) -> OK
    - Exporting cluster 'city' (records=3) -> OK
    Export of database completed.
    
  • 导出当前数据库,只导出函数:

    orientdb> EXPORT DATABASE functions.gz -includeClass=OFunction -includeInfo=FALSE 
              -includeClusterDefinitions=FALSE -includeSchema=FALSE 
              -includeIndexDefinitions=FALSE -includeManualIndexes=FALSE
    
  • 上面的例子可以简化为,排除所有,只包含你需要的特征。例如,导出当前数据库,只导出模式:

    orientdb> EXPORT DATABASE schema.gz -excludeALL -includeSchmea=TRUE
    

导出API

除了命令行,可以通过Java和其他运行在JVM的语法触发导出,使用类 ODatabaseExport

例如:

ODatabaseDocumentTx db = new ODatabaseDocumentTx("plocal:/temp/mydb");
db.open("admin", "admin");
try{
  OCommandOutputListener listener = new OCommandOutputListener() {
    @Override
    public void onMessage(String iText) {
      System.out.print(iText);
    }
  };

  ODatabaseExport export = new ODatabaseExport(db, "/temp/export", listener);
  export.exportDatabase();
  export.close();
} finally {
  db.close();
}

更多备份和恢复,导入和导出,参考下面命令:

导出格式参考: