为什么网站搜索不到,电子行业网站,济南手机建站价格,长春中企动力一、KWDB 容灾
WAL 概述
KWDB 采用预写式日志#xff08;Write-Ahead Logging#xff0c;WAL#xff09;#xff0c;记录每个时序表的模式变更和数据变更#xff0c;以实现时序数据库的数据灾难恢复、时序数据的一致性和原子性。
KWDB 默认会将保存在 WAL 日志缓存中的…一、KWDB 容灾
WAL 概述
KWDB 采用预写式日志Write-Ahead LoggingWAL记录每个时序表的模式变更和数据变更以实现时序数据库的数据灾难恢复、时序数据的一致性和原子性。
KWDB 默认会将保存在 WAL 日志缓存中的日志条目实时写入日志文件每5分钟通过后台线程更新 WAL 文件和数据文件的 CHECKPOINT_LSN (检查点日志序列号)写入 CHECKPOINT WAL 日志然后同步数据文件到磁盘。
系统正常停机时KWDB 会主动同步数据文件到磁盘并更新 CHECKPOINT_LSN。系统出现宕机时KWDB 重启时会从最新的 CHECKPOINT_LSN 回放日志以保证数据完整性。这种机制确保了即使在系统崩溃的情况下也能通过重新执行日志中的操作来恢复数据库的一致性。
KWDB 支持对以下操作进行预写式日志记录
参数描述INSERT写入时序数据UPDATE更新时序数据DELETE删除时序数据CHECKPOINT检查点操作BEGIN开始迷你事务即将多个步骤合并为一个要么全部成功要么全部失败的操作COMMIT结束迷你事务ROLLBACK回滚迷你事务TSBEGIN开始时序数据事务TSCOMMIT结束时序数据事务TSROLLBACK回滚时序数据事务DDL_CREATE创建时序表DDL_DROP删除时序表DDL_ALTER_COLUMN修改时序表schema
WAL 日志文件由多个文件组成称为 WAL 日志文件组。默认情况下WAL 日志文件组包含三个大小相同的日志文件每个文件的大小为 64MB。这些日志文件保存在时序表数据同级目录下的 wal 子目录中文件以 kwdb_wal 的形式进行命名。系统初始时会使用 kwdb_wal0 作为活动日志文件。当前日志文件写满后系统会按照顺序创建或使用下一个日志文件直到日志文件组中的所有文件都被写满之后系统会重新使用 kwdb_wal0 继续写入。
WAL 设置
KWDB 支持通过set cluster setting parameter valueSQL 语句来开启或关闭 WAL 日志功能、设置 WAL 日志同步周期、WAL 日志缓存大小、检查点周期以及调整日志文件组的文件数量和每个日志文件的大小。
1、前提条件
用户为 admin 用户或 admin 用户的成员。
2、步骤
1根据需要开启或关闭 WAL日志功能设置 WAL 日志同步周期。注意实时写入 WAL 日志可能会显著影响数据写入速度。
SET CLUSTER SETTING ts.wal.flush_interval interval;默认值为0s表示开启 WAL 日志功能并且实时进行日志写入。设置值小于等于0时表示关闭 WAL 日志。设置值在0-200ms区间时系统会实时写入 WAL 日志设置值大于200ms时系统将根据实际设置值进行日志同步。
示例
SET CLUSTER SETTING ts.wal.flush_interval 300 ms;2根据需要设置 WAL 日志缓存大小。
SET CLUSTER SETTING ts.wal.buffer_size size;默认值为4 MiB设置值应不小于4 MiB。
示例
SET CLUSTER SETTING ts.wal.buffer_size 10 MiB;3 根据需要设置 WAL 日志检查点周期。
SET CLUSTER SETTING ts.wal.checkpoint_interval interval;默认值为1分钟。建议在日常运行中设置大于1分钟的时间间隔。如果宕机恢复速度较慢可以缩短此间隔建议最小为1秒。
示例
SET CLUSTER SETTING ts.wal.checkpoint_interval 10m;4根据需要设置日志文件组的文件数量以及每个WAL日志文件的大小。
SET CLUSTER SETTING ts.wal.files_in_group number;
SET CLUSTER SETTING ts.wal.file_size size;文件数量默认为3个文件大小默认值为64MiB建议将WAL日志文件组的总大小设置为数据库日增大小的1%~3%左右可根据以下公式计算WAL日志文件使用的磁盘空间上限
total_wal.file_size ts.wal.file_size * ts.wal.files_in_group * table_number * replica_number / node_number示例
SET CLUSTER SETTING ts.wal.files_in_group 10;
SET CLUSTER SETTING ts.wal.file_size 256 MiB;KWDB 备份
KWDB 目前支持通过数据导入导出方式进行数据库库级别和表级别的数据备份
表级别数据导出
KWDB 支持使用 SQL 语句导出以下信息
时序表或关系表的元数据及用户数据。元数据以 meta.sql 文件形式保存用户数据以.csv 格式保存。系统表数据具体包括用户信息表、权限信息和集群配置表
导出过程中如果目标位置不可达系统会直接报错如果因其他原因导致导出中断系统会保留已成功导出的文件。
1、前提条件
用户拥有管理员权限。如果要将数据导出到指定服务器该服务器必须处于运行状态可访问且已开放 PUT 权限以支持文件上传。如果导出数据时需要创建文件夹以存放数据用户还需要拥有在服务器上创建文件夹的权限。
2、SQL 语法
时序表和关系表的导出语法略有不同时序表支持先筛选表数据范围后再导出导出表数据时设置包围符、转义符和空值的表示形式关系表暂不支持上述设置。
时序表筛选范围后导出
EXPORT INTO CSV expt_path FROM SELECT [ * | column_list ] FROM table_name [where_clause];时序表导出 EXPORT INTO CSV expt_path FROM TABLE table_name WITH [ column_name | meta_only | data_only | delimiter char | chunk_rows number | enclosed char | escaped char | nullas char ];关系表导出
EXPORT INTO CSV expt_path
FROM TABLE table_name
WITH [ meta_only | data_only | delimiter char | chunk_rows number ];用户信息表导出
EXPORT INTO CSV expt_path FROM TABLE system.users;用户权限信息导出
EXPORT INTO CSV expt_path FROM SELELCT * FROM system.information_schema.table_privileges;集群配置表导出
EXPORT INTO CSV expt_path FROM TABLE system.settings;3、参数说明
参数描述expt_path导出文件的存放路径支持nodelocal://node_id/dir和server_ip/dir两种格式。 一、nodelocal://node_id/dir使用节点本地路径。 1、node_id节点 ID例如本地只有一个节点时需要将 node_id 指定为1。 2、 dir用户自定义的存放数据的文件夹名称。如果文件夹不存在导出时系统会创建相应的文件夹路径为用户安装 KWDB 时定义的 KWDB 数据存放路径默认为/var/lib/kwdb/extern/folder_name。 -二、 server_ip/dir使用服务器地址。 1、 server_ip服务器 IP 地址和端口例如http://172.18.0.1:80902、 dir用户自定义的存放数据的文件夹名称。如果文件夹不存在导出时系统会创建相应的文件夹。column_list用于指定需要导出的数据列和标签列各列之间用逗号隔开。table_name需要导出数据的表名。where_clause可选参数用于限制待导出的表数据范围KWDB支持在where子句中使用以下运算符1、比较运算符、 、、、和! 2、 逻辑运算符AND、OR和NOT 3、 模糊查询LIKE可以使用通配符%表示任意字符包括空字符出现任意次数或者使用_通配符表示任意单个字符。注意时间戳、数值和布尔类型的数据不支持模糊查询。 4、 NULL值判断通过IS NULL或IS NOT NULL检查某列的值是否为NULL或不为NULL。 5、IN 运算符用于匹配一组值中的任意一个 6、BETWEEN运算符用于匹配某个范围内的值column_name可选参数表示导出时添加列名系统默认导出时不导出列名。meta_only可选参数表示只导出元数据不导出用户数据。该参数与data_only互斥。data_only可选参数表示只导出用户数据不导出元数据。该参数与meta_only互斥。delimiter可选参数用于指定分隔符。系统将根据指定的分隔符读取表的用户数据或者将数据写入 CSV 文件。 分隔符支持指定单个字符或空字符不支持双引号。 注意 - 分隔符应尽量避免与现有数据中的字符相同如果数据中包含指定的分隔符系统会默认增加包围符来避免导出错误。 - 如果在数据导出时指定了分隔符在导入数据时需要使用相同的分隔符进行数据导入。导出与导入时定义的分隔符不一致可能会导致数据导入失败。chunk_rows可选参数用于指定导出时单个 CSV 文件的行数。如果待导出数据的行数大于设定值系统将根据设定值将待导出的表拆分成多个 CSV 文件生成的文件按照节点id.文件id.csv的形式进行命名。 默认值和上限值为 100000 行设置为0时表示无行数限制。enclosed可选参数用于指定导出时序数据时的包围符默认为双引号支持指定为单引号包围符不能与分隔符相同。 注意将包围符指定为单引号时格式应为‘改回双引号时格式应为’。escaped可选参数用于指定导出时序数据时的转义符默认为双引号支持指定为反斜杠转义符不能与分隔符相同。nullas可选参数用于指定导出时序数据时空值的表示形式默认不显示内容支持指定为NULL、null、Null或\N。
4、示例
示例 1将表的用户数据和元数据导出到本地节点
EXPORT INTO CSV nodelocal://1/a FROM TABLE ts_table;result
-----------succeed
(1 row)示例 2将表的用户数据和元数据导出到指定服务器
EXPORT INTO CSV http://172.18.10.1:8090/ts_table FROM TABLE ts_table;
result
-----------
succeed
(1 row)示例 3筛选时序表指定时间段的指定列数据后导出数据
EXPORT INTO CSV nodelocal://1/a FROM SELECT ts, value, site_id FROM temperature WHERE ts 2024-02-01 09:00:00;
result
-----------
succeed
(1 row)示例 4导出时序表的非空值数据
EXPORT INTO CSV nodelocal://1/a FROM SELECT * from temperature WHERE value IS NOT NULL;
result
-----------
succeed
(1 row)示例 5只导出表的用户数据
EXPORT INTO CSV nodelocal://1/a FROM TABLE ts_table WITH data_only;
result
-----------
succeed
(1 row)示例 6只导出表的元数据
EXPORT INTO CSV nodelocal://1/a FROM TABLE ts_table WITH meta_only;
result
-----------
succeed
(1 row)示例 7导出表数据时指定分隔符
EXPORT INTO CSV nodelocal://1/a FROM TABLE ts_table WITH DELIMITER /;
result
-----------
succeed
(1 row)示例 8导出表数据时指定分隔符时报错
EXPORT INTO CSV nodelocal://1/a FROM TABLE ts_table WITH DELIMITER ;
ERROR: delimiter cant be
SQLSTATE: 22023示例 9导出表数据时限制单个文件行数
EXPORT INTO CSV nodelocal://1/a FROM TABLE ts_table WITH chunk_rows 1000;
result
-----------
succeed
(1 row)示例 10导出时序表时指定包围符为单引号
EXPORT INTO CSV nodelocal://1/a FROM TABLE ts_table WITH enclosed ;
result
-----------
succeed
(1 row)示例 11导出时序表时指定转义符为反斜杠
EXPORT INTO CSV nodelocal://1/a FROM TABLE ts_table WITH escaped \;
result
-----------
succeed
(1 row)示例 12导出时序表时指定空值表现形式为 NULL
EXPORT INTO CSV nodelocal://1/a FROM TABLE ts_table WITH NULLAS NULL;
result
-----------
succeed
(1 row)表级别数据导入
用户可以将从其它 KWDB 数据库导出的时序表或关系表数据及元数据导入到另一个 KWDB 库中。目前不支持导入数据库的系统表数据。 KWDB 支持以下多种导入方式及导入数据选择。 同时导入表的用户数据和元数据 仅导入表的用户数据 仅导入表的元数据 如果目标表中已经存在用户数据时KWDB 支持对表数据执行增量导入。 数据导入过程中若出现失败系统不会回滚导入操作但会保留已成功导入的数据。 时序数据导入报错后系统通过系统显示写入失败的数据行数同时将写入失败数据和错误信息记录到 reject 文件中该文件位于导入数据文件的同级路径下。 提示 如果使用 sort -t separator -k primary key column file_namelinux 命令提前对数据文件进行数据排序可提升数据导入效率。 如果待导入数据使用 GBK 字符集则导入前需要使用SET client_encoding GBK 将客户端字符集编码设置为 GBK。 1、前提条件 用户拥有管理员权限。 待导入表的列数和数据类型与数据库现有表的列数和数据类型一致。
2、SQL 语法
时序表和关系表的导入语法略有不同时序表支持导入表数据时设置包围符、转义符和空值的表示形式关系表暂不支持上述设置。
时序表导入 全量导入用户数据和元数据并根据指定的文件目录或表结构创建表
IMPORT TABLE CREATE USING sql_path CSV DATA (file_path) WITH [delimiter char | enclosed char | escaped char | nullif char | thread_concurrency int| batch_rows int| auto_shrink];仅导入用户数据或增量导入
IMPORT INTO table_name [column_list] CSV DATA (file_path) WITH [delimiter char | enclosed char | escaped char | nullif char | thread_concurrency int| batch_rows int| auto_shrink];仅导入元数据
IMPORT TABLE CREATE USING sql_path;关系表导入 同时导入用户数据和元数据
IMPORT TABLE CREATE USING sql_path CSV DATA (file_path) WITH DELIMITER char; 仅导入用户数据
IMPORT INTO table_name CSV DATA (file_path) WITH DELIMITER char;仅导入元数据
IMPORT TABLE CREATE USING sql_path;3、参数说明
参数说明sql_path待导入的元数据文件路径。支持nodelocal://node_id/folder_name/file_name和server_ip/folder_name/file_name两种格式。 一、 nodelocal://node_id/folder_name/file_name使用节点本地路径。 1node_id节点 ID例如本地只有一个节点时将 node_id 指定为1。 2folder_name用户自定义的存放数据的文件夹名称默认为/var/lib/kwdb/extern/folder_name。 3file_name待导入的元数据文件名称。二、server_ip/server_ip/folder_name/file_name:使用服务器地址。 1server_ip服务器 IP 地址和端口例如http://172.18.0.1:8090 2folder_name 用户自定义的存放数据的文件夹名称。 3file_name待导入的元数据文件名称。column_list可选参数用于指定待导入的列。未指定列时KaiwuDB 将按照源文件中列的顺序导入所有列的数据指定列名时可指定源文件的全部或部分数据列或标签列顺序可与源文件定义的列顺序不同指定列必须要包括第一列时间戳列和主标签列。 对于未指定列如果该列支持 NULL 值系统将自动写入默认值 NULL如果该列不允许为空值系统将提示·“Null value in column %s violates not-null constraints.”。file_path待导入的用户数据文件的路径支持nodelocal://node_id/folder_name/file_name和server_ip/dir两种格式。一、 nodelocal://node_id/folder_name/file_name使用节点本地路径。 - node_id节点名称只有一个数据库节点时需要将 node_id 指定为1。 - folder_name用户自定义的存放数据的文件夹名称默认为 /var/lib/kwdb/extern/folder_name。 - file_name待导入的文件的名称。 说明 时序表导入时仅需指定到文件夹无需指定待导入文件名关系表导入需指定待导入文件。二、server_ip/dir使用服务器地址。 - server_ip服务器 IP 地址和端口例如http://172.18.0.1:8090 - dir用户自定义的存放数据的文件夹名称。delimiter可选参数用于指定分隔符。系统根据指定的分隔符解析 CSV 文件并将解析后的内容导入到 KaiwuDB 系统。 导入时指定的分隔符需要与 CSV 文件中使用的分隔符一致否则可能会出现解析后列数不匹配的情况从而导致数据导入失败。enclosed可选参数用于导入时序数据时指定包围符默认为双引号支持指定为单引号包围符不能与分隔符相同。 注意 将包围符指定为单引号时格式应为‘改回双引号时格式应为’。escaped可选参数用于导入时序数据时指定转义符默认为双引号支持指定为反斜杠转义符不能与分隔符相同。nullif可选参数用于导入时序数据时指定空值的表示形式默认不显示内容支持指定为NULL、null、Null或\N。thread_concurrency导入时序数据CSV文件时并发读取和写入数据的数量系统将按照设置值对导入的文件进行平均分割并进行并发读取和写入。 默认值为1设置值应大于0小于等于系统核数的2倍如果设置值大于核数的2倍系统将按照核数的2倍执行。 thread_concurrency可与batch_rows、auto_shrink共同使用中间用逗号隔开。batch_rows并发导入时序数据时每次读取的行数。 默认为500行设置值应大于0并满足以下公式要求batch_rows * 单行数据的大小 ≤4GB 如果设置值*单行数据的大小 4GB, 系统将按照4GB所支持的最大行数执行。 batch_rows可与thread_concurrency、auto_shrink共同使用中间用逗号隔开。auto_shrink可选参数用于指定是否进行集群自适应衰减。 系统默认不进行自适应衰减如果导入时设置了auto_shrink参数集群将自动每10秒进行一次衰减。 auto_shrink可与batch_rows、thread_concurrency共同使用中间用逗号隔开。table_name目标表名表示将数据导入到数据库中的哪个表中。需要注意导入的数据列数和数据类型与数据库中现有表的列数及数据类型需要一致。
4、显示说明
参数描述job_id导入任务ID。status任务状态。fraction_completed完成情况取值范围为[0,1], 1表示已完成。rows导入行数abandon_row因去重未写入的行数reject_rows导入时写入出错的行数转存到容错文件中。
5、示例
示例 1导入本地节点的表用户数据和元数据
IMPORT TABLE CREATE USING nodelocal://1/a/meta.sql CSV DATA (nodelocal://1/a);job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)示例 2导入指定服务器的表用户数据和元数据
IMPORT TABLE CREATE USING http://172.18.0.1:8090/newdb/meta.sql CSV DATA (http://172.18.0.1:8090/newdb);job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)示例 3只导入表的用户数据
IMPORT INTO user_info1 CSV DATA (nodelocal://1/a);job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)示例 4只导入表的元数据
IMPORT TABLE CREATE USING nodelocal://1/a/meta.sql;job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------/ | succeeded | 1 | 0 | 0 | 0
(1 row)示例 5只导入表用户数据时指定分隔符
IMPORT INTO user_info1 CSV DATA (nodelocal://1/a) WITH DELIMITER /;job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)示例 6只导入时序表用户数据时指定包围符为单引号
IMPORT INTO user_info1 CSV DATA (nodelocal://1/a) WITH enclosed ;job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)示例 7只导入时序表用户数据时指定转义符为反斜杠
IMPORT INTO user_info1 CSV DATA (nodelocal://1/a) WITH escaped \;job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)示例 8只导入时序表用户数据时指定空值表现形式为 NULL
IMPORT INTO user_info1 CSV DATA (nodelocal://1/a) WITH NULLIF NULL;job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)示例9设置导入时序表的写入速率
IMPORT INTO user_info1 CSV DATA (nodelocal://1/a) WITH thred_concurrency 20, batch_rows 200;job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)库级别数据导出
支持一次性导出数据库中所有表的元数据及用户数据。导出的每张表是一个单独的目录。
时序数据库导出的表均位于 public 模式下每张表是一个单独的目录用于存放该表的用户数据.csv 文件。导出的时序数据库数据组织形式
tsdb
|-- meta.sql
|-- public|-- t1|-- n1.0.csv|-- t2|-- n1.0.csv关系数据库导出的表按其所在模式进行组织每张表是一个单独的目录用于存放该表的元数据信息meta.sql和用户数据.csv 文件。导出的关系库数据组织形式
rdb
|-- meta.sql
|-- public|-- table1|-- meta.sql|-- n1.0.csv|-- table2|-- meta.sql|-- n1.0.csv
|-- schema1|-- meta.sql|-- table1|-- meta.sql|-- n1.0.csv1、前提条件
用户拥有管理员权限。
2、SQL 语法
时序数据库和关系数据库的导出语法略有不同时序数据库支持导出数据时设置包围符、转义符和空值的表示形式关系数据库暂不支持上述设置。
如果数据使用 GBK 字符集则导出时需要使用 SET client_encoding GBK将客户端字符集编码设置为 GBK。
时序数据库导出
EXPORT INTO CSV expt_path FROM DATABASE db_name WITH [ column_name | meta_only | data_only | delimiter char | chunk_rows number | enclosed char | escaped char | nullas char];关系数据库导出
EXPORT INTO CSV expt_path FROM DATABASE db_name WITH [ meta_only | data_only | delimiter char | chunk_rows number];3、参数说明
参数描述expt_path导出文件的存放路径支nodelocal://node_id/dir和server_ip/dir两种格式。 一、nodelocal://node_id/dir使用节点本地路径。 1)node_id节点名称只有一个数据库节点时需要将 node_id指定为1。 2) dir用户自定义的存放数据的文件夹名称。如果文件夹不存在导出时系统会创建相应的文件夹路径为用户安装KWDB时自定义的KWDB数据存放路径默认为/var/lib/kwdb/extern/folder_name。二、server_ip/dir使用服务器地址。 - server_ip服务器 IP 地址和端口例如http://172.18.0.1:8090 - dir用户自定义的存放数据的文件夹名称。如果文件夹不存在导出时系统会创建相应的文件夹。db_name需要导出数据的数据库名。column_name可选参数表示导出时添加列名。系统默认导出时不导出列名。data_only可选参数表示只导出用户数据不导出元数据。该参数与meta_only互斥。meta_only可选参数表示只导出元数据不导出用户数据。该参数与data_only互斥。delimiter可选参数用于指定分隔符。系统将根据指定的分隔符读取表的用户数据或者将数据写入 CSV 文件。 分隔符支持指定单个字符或空字符不支持双引号。 注意 -分隔符应尽量避免与现有数据中的字符相同否则数据导入时可能无法按分隔符正确解析字段而导致数据导入失败。 -如果在数据导出时指定了分隔符在导入数据时需要使用相同的分隔符进行数据导入。导出与导入时定义的分隔符不一致可能会导致数据导入失败。chunk_rows可选参数用于指定导出时单个 CSV 文件的行数。如果待导出数据的行数大于设定的行数系统将根据设定值将文件拆分成多个 CSV 文件生成的文件按照分区id.文件id.csv的形式进行命名。 默认值和上限值为 100000 行。设置为0时表示无行数限制。enclosed可选参数用于导出时序数据时指定包围符默认为双引号支持指定为单引号包围符不能与分隔符相同。 注意 将包围符指定为单引号时格式应为‘改回双引号时格式应为’。escaped可选参数用于导出时序数据时指定转义符默认为双引号支持指定为反斜杠转义符不能与分隔符相同。nullas可选参数用于导出时序数据时指定空值的表示形式默认不显示内容支持指定为NULL、null、Null或\N。
4、示例
示例 1将时序数据库的用户数据和元数据导出到本地节点
EXPORT INTO CSV nodelocal://1/ts_db FROM DATABASE ts_db;result
-----------succeed
(1 row)示例 2将关系数据库的用户数据和元数据导出到本地节点
EXPORT INTO CSV nodelocal://1/rdb FROM DATABASE rdb;
filename |rows|node_id|file_num
--------------------------------------
TABLE rdb.public.t1|2 |1 |1
meta.sql |1 |1 |1
TABLE rdb.public.t2|2 |1 |1
meta.sql |1 |1 |1
(4 rows)示例 3将时序数据库的用户数据和元数据导出到指定服务器
EXPORT INTO CSV http://172.18.10.1:8090/ts_db FROM DATABASE ts_db;result
-----------succeed
(1 row)示例 4只导出数据库的用户数据
EXPORT INTO CSV nodelocal://1/ts_db FROM DATABASE ts_db WITH data_only;result
-----------succeed
(1 row)示例 5只导出数据库的元数据
EXPORT INTO CSV nodelocal://1/ts_db FROM DATABASE ts_db WITH meta_only;result
-----------succeed
(1 row)示例 6导出数据库时使用指定分隔符
EXPORT INTO CSV nodelocal://1/ts_db FROM DATABASE ts_db WITH DELIMITER /;result
-----------succeed
(1 row)示例 7导出数据库时限制单个 CSV 文件的行数
EXPORT INTO CSV nodelocal://1/ts_db FROM DATABASE ts_db WITH chunk_rows 1000;result
-----------succeed
(1 row)示例 8导出时序数据库时指定包围符为单引号
EXPORT INTO CSV nodelocal://1/ts_db FROM DATABASE ts_db WITH enclosed ;result
-----------succeed
(1 row)示例 9导出时序数据库时指定转义符为反斜杠
EXPORT INTO CSV nodelocal://1/ts_db FROM DATABASE ts_db WITH escaped \;result
-----------succeed
(1 row)示例 10导出时序数据库时指定空值表现形式为 NULL
EXPORT INTO CSV nodelocal://1/ts_db FROM DATABASE ts_db WITH NULLAS NULL;
result
-----------
succeed
(1 row)库级别数据导入
用户可以将 KWDB 数据库中导出的所有表数据及元数据完整导入到另一个 KWDB 数据库中。目前支持同时导入元数据和表数据或者只导入元数据不支持只导入所有表的用户数据。
在数据导入过程中若出现失败系统不会回滚导入操作但会保留已经成功导入的数据。时序数据导入报错后系统会将写入失败数据和错误信息记录到 reject 文件中该文件位于导入数据文件的同级路径下。
1、前提条件
用户拥有管理员权限。待导入数据的文件夹包含 CSV 和 SQL 文件。
2、SQL 语法
时序数据库和关系数据库的导入语法略有不同时序数据库支持导入数据时设置包围符、转义符和空值的表示形式关系数据库暂不支持上述设置。
如果待导入数据使用 GBK 字符集则导入前需要使用SET client_encoding GBK 将客户端字符集编码设置为 GBK。
时序数据库导入
IMPORT DATABASE CSV DATA (db_path) WITH [ delimiter char | enclosed char | escaped char | nullif char | thread_concurrency int| batch_rows int| auto_shrink];关系数据库导入
IMPORT DATABASE CSV DATA (db_path) [WITH DELIMITER char];3、参数说明
参数描述db_path待导入数据库的存放路径。支持 nodelocal://node_id/dir和server_ip/dir两种格式。 一、nodelocal://node_id/folder_name使用节点本地路径。 1node_id节点名称只有一个数据库节点时需要将 node_id 指定为1。 2 dir用户自定义的存放数据的文件夹名称默认为/var/lib/kwdb/extern/folder_name。 二、 server_ip/dir使用服务器地址。 1 server_ip服务器 IP 地址和端口例如 http://172.18.0.1:8090 2 dir用户自定义的存放数据的文件夹名称。delimiter可选参数用于指定分隔符。系统根据指定的分隔符解析 CSV 文件并将解析后的内容导入到 KWDB 系统。导入时指定的分隔符需要与 CSV 文件中使用的分隔符一致否则可能会出现解析后列数不匹配的情况从而导致数据导入失败。enclosed可选参数用于导入时序数据时指定包围符默认为双引号支持指定为单引号包围符不能与分隔符相同。 注意 将包围符指定为单引号时格式应为‘改回双引号时格式应为’。escaped可选参数用于导入时序数据时指定转义符默认为双引号支持指定为反斜杠转义符不能与分隔符相同。nullif可选参数用于导入时序数据时指定空值的表示形式默认不显示内容支持指定为 NULL、null、Null或\N。thread_concurrency导入时序数据 CSV 文件时并发读取和写入数据的数量系统将按照设置值对导入的文件进行平均分割并进行并发读取和写入。 默认值为1设置值应大于0小于等于系统核数的2倍如果设置值大于核数的2倍系统将按照核数的2倍执行。 thread_concurrency 可与 batch_rows、auto_shrink 共同使用中间用逗号隔开。batch_rows并发导入时序数据时每次读取的行数。 默认为500行设置值应大于0并满足以下公式要求batch_rows * 单行数据的大小 ≤4GB 如果设置值*单行数据的大小 4GB, 系统将按照4GB所支持的最大行数执行。 batch_rows 可与 thread_concurrency、auto_shrink 共同使用中间用逗号隔开。auto_shrink可选参数用于指定是否需要进行集群自适应衰减。 系统默认不进行自适应衰减如果导入时设置了auto_shrink参数集群将自动每10秒进行一次衰减。 auto_shrink 可与 batch_rows、thread_concurrency 共同使用中间用逗号隔开。
4、示例
示例 1导入本地数据库
IMPORT DATABASE CSV DATA (nodelocal://1/db);job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)示例 2导入指定服务器的数据库
IMPORT DATABASE CSV DATA (http://172.18.0.1:8090/newdb);job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)示例 3导入数据库时指定分隔符
IMPORT DATABASE CSV DATA (nodelocal://1/db) WITH DELIMITER /;job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)示例 4导入时序数据库时指定包围符为单引号
IMPORT DATABASE CSV DATA (nodelocal://1/db) WITH enclosed ;job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)示例 5导入时序数据库时指定转义符为反斜杠
IMPORT DATABASE CSV DATA (nodelocal://1/db) WITH escaped \;job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)示例 6导入时序数据库时指定空值表现形式为 NULL
IMPORT DATABASE CSV DATA (nodelocal://1/db) WITH NULLIF NULL;job_id | status | fraction_completed | rows | abandon_rows | reject_rows
--------------------------------------------------------------------------------------/ | succeeded | 1 | 1 | / | /
(1 row)