1. 数据迁移 导入
sdbimprt
sdbimprt 是一个 SequoiaDB 数据库导入工具,它可以实现从 JSON 格式或 CSV 格式的数据存储文件导入到 SequoiaDB 数据库。
JSON 格式的记录必须符合 Json 的定义,以左右花括号作为记录的分界符,并且字符串类型的数据必须包含在两个双引号之间,转义字符定义为反斜杠。
CSV 为 Comma-Separated Value 格式,为逗号分割数值。默认情况下每条记录以0x0D分割,字段之间以逗号分割。用户能够指定字段之间的分隔符与记录之间的分隔符。
分隔符定义(只支持ASCII字符):
用途 | 默认 | 可配 |
---|---|---|
字符串分隔符 | " | 是 |
字符分隔符 | , | 是 |
记录分割符 | '\n'(0X0D) | 是 |
选项
参数 | 缩写 | 描述 |
---|---|---|
--help | -h | 返回基本帮助和用法文本。 |
--version | 返回版本信息。 | |
--hostname | -s | 从指定主机名的 SequoiaDB 中导入数据。默认情况下 sdbimprt 尝试连接到本地主机。 |
--svcname | -p | 指定的端口号。默认情况下 sdbimprt 尝试连接到端口号11810的主机。 |
--user | -u | 数据库用户名。 |
--password | -w | 数据库密码。 |
--delchar | -a | 指定字符分隔符。默认是("), csv 格式有效。 |
--delfield | -e | 指定字段分隔符。默认是(,),csv 格式有效。 |
--delrecord | -r | 指定记录分隔符。默认是(\n),csv 格式有效。 |
--csname | -c | 指定导入数据的集合空间名。 |
--clname | -l | 指定导入数据的集合名。 |
--insertnum | -n | 批量导入记录,如果设置1,使用普通方式导入,如果大于1,则使用批量方式,设置范围是1~100000。 |
--file | 指定要导入的文件名。 | |
--type | 指定的导入数据格式。默认 csv,数据格式可以是 csv 或是 json。 | |
--fields | 指定导入数据的字段名。csv 格式有效。 | |
--headerline | 指定导入数据首行是否作为字段名,默认 false,csv 格式有效。 | |
--sparse | 指定导入数据时,自动添加字段名,默认 true,csv 格式有效。 | |
--extra | 指定导入数据时,自动添加值,默认 false,csv 格式有效。 | |
--linepriority | 当前分隔符默认的优先级为:记录分隔符,字符分隔符,字段分隔符,默认值是 true;如果设置为 false,那么分隔符的优先级为:字符分隔符,记录分隔符,字段分隔符。 | |
--force | 如果数据中有非 utf8 的数据,强制导入数据,默认 false。 | |
--errorstop | 如果遇到错误就停止。默认 false。 |
返回值
0:成功
1:成功但有警告
2:失败
127:参数错误
用法
在下面的例子,sdbimprt 将数据导入到本地数据库端口11810中对应集合空间 foo 和集合 bar,导入类型是 csv,导入文件为 test.csv。
sdbimprt -s localhost -p 11810 --type csv --file test.csv -c foo -l bar
sdbimprt 自动判断的类型:
CSV 数据 | sdbimprt 自动判断的类型 | 实际数据 |
---|---|---|
123 | 数值 | 123 |
123.1 | 数值 | 123.1 |
+123 | 数值 | 123 |
-123 | 数值 | -123 |
2E+2 | 数值 | 200 |
-2E+2 | 数值 | -200 |
0123 | 数值 | 123 |
"123" | 字符串 | 123 |
123a | 字符串 | 123a |
"ab""c" | 字符串 | ab"c |
"{a:1}" | 字符串 | {a:1} |
"true" | 字符串 | true |
"false" | 字符串 | false |
"null" | 字符串 | null |
true | 布尔 | true |
false | 布尔 | false |
null | 空 | null |
从1.8版本开始支持指定类型和默认值:
语法:field [type] [default <default value ]
支援数据类型(type):int(integer),long,bool(boolean),double,string,null
支援特殊数据类型:timestamp,date
name string default "Jack", age int default 18, phone string
数据类型是可选的,不填则程序自动判断类型,判断以上面表格为准。
用法
sdbimprt -s localhost -p 11810 --type csv --file test.csv -c foo -l bar --fields 'name string default "Jack", age int default 18, phone string'
-
例子一:导入文件是 csv,文件名是 test.csv,导入至集合空间 foo 的集合 bar 中。
以下是导入文件的内容:
"Jack",18,"China" "Mike",20,"USA"
导入命令:
sdbimprt -s localhost -p 11810 --type csv --file test.csv -c foo -l bar --fields 'name string default "Anonymous", age int, country'
-
例子二:导入文件是 csv,文件名是 test.csv,导入至集合空间 foo 的集合 bar 中。
以下是导入文件的内容:
name, age, country "Jack",18,"China" "Mike",20,"USA"
导入命令:
sdbimprt -s localhost -p 11810 --type csv --file test.csv -c foo -l bar --fields 'name string default "Anonymous", age int, country' --headerline true
由于例子二首行已经指定字段,但是要重新指定字段,那么在命令行中设置--headerline true,并且设置--fields 'name string default "Anonymous", age int, country',那么导入工具会使用--fields 为指定字段并忽略文件首行的字段了。
指定的类型与数据:
指定的类型 | 支援的数据类型 | 注意 |
---|---|---|
int(integer) | int,string,bool | bool 类型,true 转换1,false 转换0 |
long | long,string,int,bool | bool 类型,true 转换1,false 转换0 |
bool(boolean) | bool,string,int,long | int 和 long 类型,0转换 false,不等于0转换 true |
double | double,string,int | |
string | int,long,bool,double,string,timestamp,date,null | |
timestamp | string,long | 如果数据是 string,如“2014-01-01-10.30.00.000000”,“1388543400000”,如果是 long,如 1388543400000,这两种格式是正确的,数值代表的是毫秒单位 |
date | string,long | 如果数据是 string,如“2014-01-01”,“1388543400”,如果是 long,如1388543400,这两种格式是正确的,数值代表的秒单位 |
null | 指定了数据类型为 null,那么无论数据是什么,都是 null |
数据类型优先级:
1. 不指定数据类型(不支援特殊数据类型):程序自动判断类型,优先级是 null > bool > int > double > long > string
2. 指定数据类型:优先级是指定的类型 > 支援的类型(参考指定的类型与数据表格) > null
3. 指定数据类型,并且带默认值:优先级是指定的类型 > 支援的类型(参考指定的类型与数据表格) > 默认值 > null
2. 数据迁移 导出
sdbexprt
sdbexprt 是一个实用的工具。它可以从 SequoiaDB 数据库导出一个 JSON 格式或者 CSV 格式的数据存储文件。
选项
参数 | 缩写 | 描述 |
---|---|---|
--help | -h | 返回基本帮助和用法文本。 |
--version | 返回版本信息。 | |
--hostname | -s | 从指定主机名的 SequoiaDB 中导出数据。默认情况下 sdbexprt 尝试连接到本地主机。 |
--svcname | -p | 指定的端口号。默认情况下 sdbexprt 尝试连接到端口号11810的主机。 |
--user | -u | 数据库用户名。 |
--password | -w | 数据库密码。 |
--delchar | -a | 指定字符分隔符。默认是("),csv 格式有效。 |
--delfield | -e | 指定字段分隔符。默认是(,),csv 格式有效。 |
--delrecord | -r | 指定记录分隔符。默认是(\n)。 |
--csname | -c | 指定导出数据的集合空间名。 |
--clname | -l | 指定导出数的集合名。 |
--fields | 指定一个或多个字段来导出数据,使用逗号分隔多个字段。csv 格式有效。 | |
--included | 指定是否导出字段名到 csv 首行,默认 true,csv 格式有效。 | |
--file | 指定要导出的文件名。 | |
--type | 指定的导出数据格式。默认 csv,数据格式可以是 csv 或 json。 | |
--errorstop | 如果遇到错误就停止,默认 false。 |
返回值
0:成功
1:成功但有警告
2:失败
127:参数错误
用法
在下面的例子,sdbexprt 从本地数据库端口11810中导出集合空间 foo 的集合 bar 的数据,导出类型是 csv,导出文件为 contact,导出字段是 field1 和 field2。
sdbexprt -s localhost -p 11810 --type csv --file contace --fields field1,field2 -c foo -l bar