Import / Export
This is the manual for older MicroStream versions (Version < 5.0).
The new documentation (Version >= 5.0) is located at:
MicroStream provides an API to import and export persisted data of the storage. It is pretty much the same as writing and reading a backup.
The records in the storage are distributed in lots of files and folders, depending on channel count and other settings. To get order in the chaos the export produces one file per type. This files are used again by the import to read the data into the storage.
EmbeddedStorageManager storage = ...
Path targetDirectory = Paths.get("export-dir");
String fileSuffix = "bin";
StorageConnection connection = storage.createConnection();
StorageEntityTypeExportStatistics exportResult = connection.exportTypes(
new StorageEntityTypeExportFileProvider.Default(targetDirectory, fileSuffix),
typeHandler -> true // export all, customize if necessary
);
XSequence<Path> exportFiles = CQL
.from(exportResult.typeStatistics().values())
.project(s -> Paths.get(s.file().identifier()))
.execute()
;
EmbeddedStorageManager storage = ...
StorageConnection connection = storage.createConnection();
connection.importFiles(X.Enum(
Paths.get("type1.bin"),
Paths.get("type2.bin")
));
Data Conversion
It is also possible to convert the exported binary files to a human readable format, namely CSV.
EmbeddedStorageManager storage = ...
Path csvDir = Paths.get("csv-dir");
Path typeFile = Paths.get("type1.bin");
StorageDataConverterTypeBinaryToCsv converter =
new StorageDataConverterTypeBinaryToCsv.UTF8(
StorageDataConverterCsvConfiguration.defaultConfiguration(),
new StorageEntityTypeConversionFileProvider.Default(csvDir, "csv"),
storage.typeDictionary(),
null, // no type name mapping
4096, // read buffer size
4096 // write buffer size
);
StorageLockedFile storageFile = StorageLockedFile.openLockedFile(typeFile);
try
{
converter.convertDataFile(storageFile);
}
finally
{
storageFile.close();
}
EmbeddedStorageManager storage = EmbeddedStorage.start();
Path binDir = Paths.get("bin-dir");
Path csvFile = Paths.get("type1.csv");
StorageDataConverterTypeCsvToBinary<StorageFile> converter =
StorageDataConverterTypeCsvToBinary.New(
StorageDataConverterCsvConfiguration.defaultConfiguration(),
storage.typeDictionary(),
new StorageEntityTypeConversionFileProvider.Default(binDir, "dat")
);
StorageLockedFile storageFile = StorageLockedFile.openLockedFile(csvFile);
try
{
converter.convertCsv(storageFile);
}
finally
{
storageFile.close();
}
Last updated