sequoiadb数据库工具

来源:互联网 发布:爱淘宝网红包 编辑:程序博客网 时间:2024/04/18 23:08

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。
Note: linepriority 参数需要被特别关注,如果设置不当,可能会导入数据失败。当记录中包含“记录分隔符”并且 linepriority 为 true 时,工具会优先按照“记录分隔符”解析,而导致导入失败。比如:如果记录为 {"name": "Mike\n"},应当选择 linepriority 为 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数值123123.1数值123.1+123数值123-123数值-1232E+2数值200-2E+2数值-2000123数值123"123"字符串123123a字符串123a"ab""c"字符串ab"c"{a:1}"字符串{a:1}"true"字符串true"false"字符串false"null"字符串nulltrue布尔truefalse布尔falsenull空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 将数据导入到本地数据库端口11810中对应集合空间 foo 和集合 bar,导入类型是 csv,导入文件为 test.csv。
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'
Note: 指定字段可以用命令行指定,也可以在导入文件的首行指定。如果在命令行指定了--fields,--headerline 设为 true,导入工具将会优先使用命令行的指定字段并且跳过导入文件的首行。
  • 例子一:导入文件是 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
Note:

由于例子二首行已经指定字段,但是要重新指定字段,那么在命令行中设置--headerline true,并且设置--fields 'name string default "Anonymous", age int, country',那么导入工具会使用--fields 为指定字段并忽略文件首行的字段了。

指定的类型与数据:

指定的类型支援的数据类型注意int(integer)int,string,boolbool 类型,true 转换1,false 转换0longlong,string,int,boolbool 类型,true 转换1,false 转换0bool(boolean)bool,string,int,longint 和 long 类型,0转换 false,不等于0转换 truedoubledouble,string,int stringint,long,bool,double,string,timestamp,date,null timestampstring,long如果数据是 string,如“2014-01-01-10.30.00.000000”,“1388543400000”,如果是 long,如 1388543400000,这两种格式是正确的,数值代表的是毫秒单位datestring,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

0 0