The sdb2aztbl is data migration commandline tool to Windows Azure Table storage from Amazon SimpleDB!
Apache License Version 2.0
- Amazon Linux
- CentOS
- Ubuntu Linux
- Windows XP or later
- Mac OS X
- node.js v0.8 or later.
node sdb2aztbl.js --config settings.json [--tables table1,table2...] [--awsKey aws_access_key] [--awsSecret aws_secret_key]
[--sdbHostName sdb.ap-northeast-1.amazonaws.com] [--azureAccount azure_account]
[--azureSecret azure_secret] [--partitionKey azure_storage_partition_key_template]
[--rowKey azure_storage_partition_key_template]
| Arg | Description | Example |
|---|---|---|
| config | Configration file of sdb2aztbl. | |
| sdbHostName | Migration source AWS SimpleDB's region endpoint. The default value are Tokyo region. | sdb.ap-northeast-1.amazonaws.com |
| awsKey | Key of AWS | |
| awsSecret | Sercret key of AWS | |
| tables | Migration source domain name (or table name) to be migrated, comma delimited. | |
| azureAccount | Migration destination Windows Azure Table storage account name. | |
| azureSecret | Migration destination Windows Azure Table storage account sercret key. | |
| partitionKey | Format string of the Windows Azure Table's partition key. | "%Attribute1%-%Attribute2%" |
| rowKey | Format string of the Windows Azure Table's row key. | "%Attribute1%-%Attribute2%" |
You can formatting value of partitionKey and rowKey. See also "About partionKey and rowKey" section.
The sdb2aztbl can configured other details from setting.json. If you configured arguments and settings.json both, an arguments is preferred priority over settings.json.
{
"awsKey": "<Your Key of AWS>",
"awsSecret": "<Your Secret key of AWS>",
"sdbHostName": "sdb.ap-northeast-1.amazonaws.com",
"azureAccount": "<Your Windows Azure Table storage account name>",
"azureSecret": "<Your Windows Azure Table storage account secret key>",
"tables": {
"Amazon SimpleDB's domain name or table name": {
"replace": {
"PartitionKey": "%Attribute1%-%Attribute2%",
"RowKey": "%Attribute1%-%Attribute2%"
},
"type": {
"StringAttribute":"Edm.String",
"IntAttribute": "Edm.Int32",
"Int64Attribute": "Edm.Int64",
"DoubleAttribute": "Edm.Double",
"BoolAttribute": "Edm.Boolean",
"GUIDAttribute": "Edm.Guid",
"DateTimeAttribute": "Edm.DateTime"
},
"where": "`BoolTest` = '1'"
}
}
}
You can formatting value of partitionKey and rowKey.
"partitionKey": "Any value of the fixed"
You will output the value of any directly. In the following example, The partitionKey combined FirstName and LastName attribute of SimpleDB.
"partitionKey": "%FirstName% %LastName%"
| Identifier | Value |
|---|---|
| "%$ItemName%" | ItemName() row of AWS SimpleDB. |
| "%$Identity%" | Sequence number of zero origin. |
| "%$Guid%" | Generate new GUID. |
It is also possible to use a combination of several of these features.
"Azure_%Guid%_%FirstName%_%Identity%"
If the value of the Attribute FirstName of SimpleDB was ** PNOP **, PartitionKey similar to the following is generated.
"Azure_ACBB16CA-E78D-3B13-041-3CD2-8CC57221_PNOP_0"
When you import, you can specify the type explicitly. The sdb2aztbl will import as a Edm.String If not specified. The type can be one of the following types that can be specified in the Windows Azure.
- Edm.String
- Edm.Int32
- Edm.Int64
- Edm.Double
- Edm.Boolean
- Edm.Guid
- Edm.DateTime
Notes: You do not designate type a partitionKey and rowKey.
"tables": {
"Migration source Amazon SimpleDB's domain name": {
"replace": {
"PartitionKey": "%Attribute1%-%Attribute2%",
"RowKey": "%Attribute1%-%Attribute2%"
},
"type": {
"PartitionKey": "Edm.String",
"RowKey": "Edm.String",
"StringAttribute":"Edm.String",
"IntAttribute": "Edm.Int32",
"Int64Attribute": "Edm.Int64",
"DoubleAttribute": "Edm.Double",
"BoolAttribute": "Edm.Boolean",
"GUIDAttribute": "Edm.Guid",
"DateTimeAttribute": "Edm.DateTime"
},
"where": "`BoolTest` = '1'"
}
}
The sdb2aztbl's error detail output to standard error output. And sdb2aztbl stop immediately when caught the exception. (ex: string cannot be used for import)
You can get the installer from http://nodejs.org/download/. node.js install according to the installation wizard after download.
You can using https://github.com/isaacs/nave. The node.js distribute built binary to user environment after install.
wget https://github.com/isaacs/nave/raw/master/nave.sh
bash nave.sh install stable
bash nave.sh use stable