migrate

Syntax

migrate(backupDir, [backupDBPath], [backupTableName], [newDBPath=backupDBPath], [newTableName=backupTableName])

Arguments

backupDir is a string indicating the directory to save the backup.

backupDBPath is a string indicating the path of a database.

backupTableName is a string indicating a table name.

newDBPath is a string indicating the new database name. If not specified, the default value is backupDBPath. To specify the parameter, make sure that the storage engine of the backup database is the same as the engine of newDBPath, and the partitionScheme must be the same (except for VALUE). For a VALUE partitioned database, the partitioning scheme of the backup database must be a subset of that of the database to be restored.

newTableName is a string indicating the new table name. If not specified, the default value is backupTableName.

Details

Restore the backup. It returns a table containing the restored data of each table. It must be executed by a logged-in user.

The migrate function has the following 3 usages:

  • migrate(backupDir): Restore the backup of all databases in this directory. The restored database name and table name are the same as the original ones.

  • migrate(backupDir, backupDBPath): Restore the backup of the specified database in this directory. The restored database name and table name are the same as the original ones.

  • migrate(backupDir, backupDBPath, backupTableName, [newDBPath], [newTableName]): Restore the backup of the specified table of the specified database in the directory.

    • If newDBPath and newTableName are not specified, the restored database name and table name are the same as the original ones.

    • If newDBPath and newTableName are specified, the restored database name and table name will be newDBPath and newTableName, respectively.

Examples

Create two sample databases and back up them to the same directory:

$ backupDir="/home/DolphinDB/backup"

$ n = 1000000
$ t1 = table(rand(2012.12.01..2012.12.10, n) as date, rand(`AAPL`IBM`GOOG`MSFT, n) as sym, rand(1000.0,n) as price)
$ t2 = table(rand(2012.12.01..2012.12.10, n) as date, rand(`AAPL`IBM`GOOG`MSFT, n) as sym, rand(1000,n) as qty)
$ db1 = database("dfs://db1", VALUE, 2012.12.01..2012.12.10)
$ trades1 = db1.createPartitionedTable(t1, `trades1, `date).append!(t1)
$ trades2 = db1.createPartitionedTable(t2, `trades2, `date).append!(t2)

$ n = 1000000
$ t1 = table(rand(2012.12.01..2012.12.10, n) as date, rand(`AAPL`IBM`GOOG`MSFT, n) as sym, rand(1000.0,n) as price)
$ t2 = table(rand(2012.12.01..2012.12.10, n) as date, rand(`AAPL`IBM`GOOG`MSFT, n) as sym, rand(1000,n) as qty)
$ db1 = database("dfs://db2", VALUE, `AAPL`IBM`GOOG`MSFT)
$ quotes1 = db1.createPartitionedTable(t1, `quotes1, `sym).append!(t1)
$ quotes2 = db1.createPartitionedTable(t2, `quotes2, `sym).append!(t2)

$ backup(backupDir, <select * from trades1>, true)
$ backup(backupDir, <select * from trades2>, true)
$ backup(backupDir, <select * from quotes1>, true)
$ backup(backupDir, <select * from quotes2>, true)

Delete the original database:

$ dropDatabase("dfs://db1")
$ dropDatabase("dfs://db2")

Example 1. Restore all databases

$ migrate(backupDir);

dbName

tableName

success

errorMsg

dfs://db1

trades1

1

dfs://db1

trades2

1

dfs://db2

quotes2

1

dfs://db2

quotes1

1

Example 2. Restore all tables in the database dfs://db1

$ migrate(backupDir, "dfs://db1");

dbName

tableName

success

errorMsg

dfs://db1

trades1

1

dfs://db1

trades2

1

Example 3. Restore table trades1 in the database dfs://db1

Example 3.1 When we do not specify the new database name and table name

$ migrate(backupDir, "dfs://db1", "trades1");

dbName

tableName

success

errorMsg

dfs://db1

trades1

1

Example 3.2 Specify the new database name and table name

$ migrate(backupDir, "dfs://db1", "trades1", "dfs://db3", "trades");

dbName

tableName

success

errorMsg

dfs://db1

trades1

1

$ exec count(*) from loadTable("dfs://db3", "trades")
1000000

Related function: backup