命令 - IMPORT
导入一个数据库到当前打开的实例上。
输入的文件必须使用EXPORT
导出的Export Format。默认,文件使用GZIP算法压缩。
使用EXPORT
命令,允许你不丢数据的情况下在不同的发布版之间迁移,旧版本导出的数据可以导入新版本。
语法
IMPORT DATABASE <input-file> [-preserveClusterIDs = <true|false>]
[-merge = <true|false>]
[-migrateLinks = <true|false>]
[-rebuildIndexes = <true|false>]
<inputy-file>
定义导入文件的路径。-preserveClusterIDs
定义导入时是否保留簇的ID。如果关闭,导入时会创建临时的簇ID,有时会失败。这个选项只有PLocal存储类型时才有效。-merge
定义是否将导入的内容和当前库中的内容合并。关闭的时候(默认),导入会覆盖当前的数据,除了安全相关的类之外(ORole
,OUser
,OIdentity
), 这些类的数据会保留。版本1.6.1引入了这个特性。-migrateLinks
定义是否在导入后迁移连接。如果开启,会更新所有连接为新的RID。默认是开启。建议你在合并的时候关闭,但是你要确认已经存在的记录没有连接到你导入的记录。版本1.6.1引入了这个特性。-rebuildIndexes
定义是否在导入后重建索引。默认是开启的。你可以设置为false来加速导入,但是你必须要确认导入不会影响索引。版本1.6.1引入了这个特性。
例子
导入数据库
petshop.export
:orientdb>
IMPORT DATABASE C:/temp/petshop.export -preserveClusterIDs=true
Importing records... - Imported records into the cluster 'internal': 5 records - Imported records into the cluster 'index': 4 records - Imported records into the cluster 'default': 1022 records - Imported records into the cluster 'orole': 3 records - Imported records into the cluster 'ouser': 3 records - Imported records into the cluster 'csv': 100 records - Imported records into the cluster 'binary': 101 records - Imported records into the cluster 'account': 1005 records - Imported records into the cluster 'company': 9 records - Imported records into the cluster 'profile': 9 records - Imported records into the cluster 'whiz': 1000 records - Imported records into the cluster 'address': 164 records - Imported records into the cluster 'city': 55 records - Imported records into the cluster 'country': 55 records - Imported records into the cluster 'animalrace': 3 records - Imported records into the cluster 'ographvertex': 102 records - Imported records into the cluster 'ographedge': 101 records - Imported records into the cluster 'graphcar': 1 records
更多备份和恢复,导入和导出,参考下面命令:
导出格式参考:
- Export File Format
ODatabaseExport
Java Class
导入API
Java API的方式,使用类ODatabaseImport
。
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);
}
};
ODatabaseImport import = new ODatabaseImport(db, "/temp/export/export.json.gz", listener);
import.importDatabase();
import.close();
} finally {
db.close();
}
故障排除
验证的错误
有时,你会在导入时遇到验证的错误OValidationException
。2.2版本之后,可以在数据库级别使用命令ALTER DATABASE
进行设置,从而让导入继续进行。
禁止当前数据库的验证:
orientdb>
ALTER DATABASE validation false
导入已经导出的数据库:
orientdb>
IMPORT DATABASE /path/to/my_data.export -preserveClusterIDs=TRUE
重新开启校验:
orientdb>
ALTER DATABASE validation true
簇ID
在导入期间,有时你会遇到如下错误: Imported cluster 'XXX' has id=6 different from the original: 5
。一般情况下这种错误是由于从太老版本的OrietnDB导出的。可以执行命令DROP CLASS
删除类ORIDs
, 然后再重新导入。
导入数据库:
orientdb>
IMPORT DATABASE /path/to/old_data.export
Importing records... - Creating cluster 'company'...Error on database import happened just before line 16, column 52 com.orientechnologies.orient.core.exception.OConfigurationException: Imported cluster 'company has id=6 different from the original: 5 at com.orientechnologies.orient.core.db.tool.ODatabaseImport.importClusters( ODatabaseImport.java:500) at com.orientechnologies.orient.core.db.tool.ODatabaseIMport.importDatabase( ODatabaseImport.java:121)删除类
ORIDs
:orientdb>
DROP CLASS ORIDs
导入数据库:
orientdb>
IMPORT DATABASE /path/to/old_data.export
数据库现在导入就没有错误了。