12-TDengine数据迁移:导入与导出

简介: 12-TDengine数据迁移:导入与导出

背景


对于数据库的运维,免不了数据迁移,对数据库表进行导入与导出; TDengine 官方提供了各类数据导入、导出方式。


下面就体验下不同的导入、导出方法。


  • 数据导出:
  • taosdump
  • csv


  • 数据导入:


  • source
  • csv
  • taosdump

数据导出


数据导出:taosdump


  • taosdump主要参数含义: -o:指定输出文件的路径。文件会自动生成。

-u:用户名。
-p:密码。
-A:指示导出所有数据库的数据。
-D:表示指定数据库。
-i:表示输入目录。
-s:表示导出schema。
-t:指定导入到一个文件的表的个数。该参数可以控制输出文件的大小。
-B:指定一条import语句中包含记录的条数。注意:不要让sql语句超过64k,否则后续导入会出错。该参数为了后续导入时,提高导入速率。
-T: 指定导出数据时,启动的线程数。建议设置成机器上core的2倍。


  • 实际中一般不会导出所有库,就不测试这种方式了。
./bin/taosdump -o ./dump -A -t 500 -B 100 -T 8
  • 导出指定数据库的数据,可指定多个库,以空格分隔
# 不指定输出目录
./bin/taosdump -D ok -t 500 -B 100 -T 8
# 指定输出目录
./bin/taosdump -o ./dump -D ok -t 500 -B 100 -T 8
# 导出结果
[root@hadoop1 dump]# tree
.
├── dbs.sql
├── ok.tables.0.sql
└── ok.tables.1.sql


Notes:


  • 若不指定输出路径,则默认导出至当前目录;
  • 若指定了输出目录,则目录需要提前创建好;


导出的文件包括:


  1. 一个dbs.sql文件,内容为导出的数据库、超级表创建语句;


  1. 若干个XXX_tables.N.sql文件,文件名的规则:XXX是数据库名称,N是数字,从0开始递增,内容为数据表建表语句、插入语句;

image.png

  • 导出指定数据库中指定表的数据,可指定多个表,以空格分隔
./bin/taosdump -o ./dump ok device2 -t 500 -B 100 -T 8

image.png

  • 导出指定数据库的schema
./bin/taosdump -o ./dump -D ok -t 500 -s -T 8

image.png

  • 导出所有数据库的schema
./bin/taosdump -o ./dump -A -t 500 -s -T 8


数据导出:导出CSV


select * from ok.power >> data.csv


Note:


  1. 以上是导出所有子表数据到一个csv文件,如果后续需要通过csv文件导入,应按照子表进行查询导出,然后再导入;或者采用taosdump导出。


  1. 未指定路径的导出,默认在当前目录下;下载到本地后,是Windows操作系统,csv格式的文件默认关联Excel打开,打开之后,中文乱码。

image.png

这个不是 TDengine 的 bug ,因为通过文本文件打开是正常的,另存为 ANSI 编码后,在 Excel 中打开中文正常显示。

image.png


数据导入:source


这种方式类似于批量执行 SQL 语句,比如以下 SQL 语句构成的文件:data.sql

create database if not exists ok;
USE ok;
create stable if not exists power(ts timestamp, voltage int, current float, temperature float) tags(sn int, city nchar(64), groupid int);
create table if not exists device1 using power tags(1, "太原", 1);
create table if not exists device2 using power tags(2, "西安", 2);
insert into device1 values("2021-09-04 21:03:38.734", 1, 1.0, 1.0);
insert into device2 values("2021-09-04 21:03:40.734", 2, 2.0, 2.0);
taos> source "/usr/local/taos/data.sql";


image.png


数据导入:导入CSV


当导入单个子表数据时可采用这种方式, data.csv 文件内容如下:

'2021-09-04 21:03:38.734',1,1.00000,1.00000,1,'太原',1
'2021-09-05 23:05:11.138',225,9.47500,13.52135,1,'太原',1
'2021-09-05 23:05:41.138',208,6.44464,0.99233,1,'太原',1
taos> insert into ok.device1 file '/usr/local/taos/data.csv';
Query OK, 3 of 3 row(s) in database (0.002303s)


Note:


  1. 此处应按照子表进行导入,即csv文件中的数据应只属于一张表,当然csv数据应与数据表结构一致;


  1. csv文件中应仅包含数据(即要求去掉表头),如果CSV文件首行存在描述信息,请手动删除后再导入。如某列为空,填NULL,无引号。


数据导入:taosdump


实际中更多的采用这种方式完成数据迁移:先导出→压缩→传输至其他主机上→解压→导入→完成。

# -i 表示输入文件的目录
[root@hadoop1 taos]# ./bin/taosdump -i ./dump -T 8
====== arguments config ======
host: (null)
user: root
password: taosdata
port: 0
mysqlFlag: 0
outpath: 
inpath: ./dump
resultFile: ./dump_result.txt
encode: (null)
all_databases: false
databases: 0
schemaonly: false
with_property: true
avro format: false
start_time: -9223372036854775807
end_time: 9223372036854775807
precision: ms
data_batch: 1
max_sql_len: 65480
table_batch: 1
thread_num: 8
allow_sys: 0
abort: 0
isDumpIn: 1
arg_list_len: 0
debug_print: 0
==============================
start to dispose 3 files in ./dump
Success Open input file: ./dump/dbs.sql
, Success Open input file: ./dump/ok.tables.0.sql
, Success Open input file: ./dump/ok.tables.1.sql

导入完成。


taosdump参数列表


可通过 help 参数,查看 taosdump 主要参数说明;

[root@hadoop1 taos]# ./bin/taosdump --help
Usage: taosdump [OPTION...] dbname [tbname ...]
  or:  taosdump [OPTION...] --databases dbname ...
  or:  taosdump [OPTION...] --all-databases
  or:  taosdump [OPTION...] -i inpath
  or:  taosdump [OPTION...] -o outpath
  -h, --host=HOST            Server host dumping data from. Default is
                             localhost.
  -p, --password             User password to connect to server. Default is
                             taosdata.
  -P, --port=PORT            Port to connect
  -q, --mysqlFlag=MYSQLFLAG  mysqlFlag, Default is 0
  -u, --user=USER            User name used to connect to server. Default is
                             root.
  -c, --config-dir=CONFIG_DIR   Configure directory. Default is
                             /etc/taos/taos.cfg.
  -e, --encode=ENCODE        Input file encoding.
  -i, --inpath=INPATH        Input file path.
  -o, --outpath=OUTPATH      Output file path.
  -r, --resultFile=RESULTFILE   DumpOut/In Result file path and name.
  -a, --allow-sys            Allow to dump sys database
  -A, --all-databases        Dump all databases.
  -D, --databases            Dump assigned databases
  -N, --without-property     Dump schema without properties.
  -s, --schemaonly           Only dump schema.
  -v, --avro                 Dump apache avro format data file. By default,
                             dump sql command sequence.
  -B, --data-batch=DATA_BATCH   Number of data point per insert statement. Max
                             value is 32766. Default is 1.
  -L, --max-sql-len=SQL_LEN  Max length of one sql. Default is 65480.
  -t, --table-batch=TABLE_BATCH   Number of table dumpout into one output file.
                             Default is 1.
  -T, --thread_num=THREAD_NUM   Number of thread for dump in file. Default is
                             5.
  -S, --start-time=START_TIME   Start time to dump. Either epoch or
                             ISO8601/RFC3339 format is acceptable. ISO8601
                             format example: 2017-10-01T00:00:00.000+0800 or
                             2017-10-0100:00:00:000+0800 or '2017-10-01
                             00:00:00.000+0800'
  -E, --end-time=END_TIME    End time to dump. Either epoch or ISO8601/RFC3339
                             format is acceptable. ISO8601 format example:
                             2017-10-01T00:00:00.000+0800 or
                             2017-10-0100:00:00.000+0800 or '2017-10-01
                             00:00:00.000+0800'
  -C, --precision=PRECISION  Specify precision for converting human-readable
                             time to epoch. Valid value is one of ms, us, and
                             ns. Default is ms.
  -g, --debug                Print debug info.
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
SQL 前端开发 druid
5-TDengine集成SpringBoot,MyBatis,MyBatisPlus
5-TDengine集成SpringBoot,MyBatis,MyBatisPlus
5899 0
5-TDengine集成SpringBoot,MyBatis,MyBatisPlus
|
机器学习/深度学习 移动开发
解决mqtt连接报Connection lost (32109) - java.lang.IllegalArgumentException: Invalid UTF-8 char: [a]错误问题
最近生产环境在向mqtt客户端发布数据时反复出现一会断开一会连接错误,捕获的异常是java.lang.IllegalArgumentException: Invalid UTF-8 char: [a]。尝试各种方式都未找到问题的原因,最后在检查发送主题topic的时候发现所发送mqtt客户端的topic的结尾包含了换行符,最终才将问题得以解决。
6839 0
解决mqtt连接报Connection lost (32109) - java.lang.IllegalArgumentException: Invalid UTF-8 char: [a]错误问题
|
负载均衡 Ubuntu 应用服务中间件
|
网络协议 JavaScript Java
2-TDengine客户端连接,RESTful,JDBC
2-TDengine客户端连接,RESTful,JDBC
3980 0
2-TDengine客户端连接,RESTful,JDBC
|
缓存 Docker 容器
优化Docker镜像大小的五个实用技巧
优化Docker镜像大小的五个实用技巧
1061 98
|
缓存 运维 NoSQL
Redis 集群化部署实战:打造高可用、可扩展的缓存系统
本文详细介绍Redis集群化部署方案,涵盖架构设计、环境准备、配置优化、Docker部署、集群管理、监控运维及故障处理,助你构建高可用、可扩展的分布式缓存系统。
1179 2
|
Linux
linux两台服务器时间同步
linux两台服务器时间同步
1346 0
|
存储 SQL 关系型数据库
从 MySQL 到时序数据库 TDengine:Zendure 如何实现高效储能数据管理?
TDengine 助力广州疆海科技有限公司高效完成储能业务的数据分析任务,轻松应对海量功率、电能及输入输出数据的实时统计与分析,并以接近 1 : 20 的数据文件压缩率大幅降低存储成本。此外,taosX 强大的 transform 功能帮助用户完成原始数据的清洗和结构优化,而其零代码迁移能力更实现了历史数据从 TDengine OSS 与 MySQL 到 TDengine 企业版的平滑迁移,全面提升了企业的数据管理效率。本文将详细解读这一实践案例。
739 0
|
关系型数据库 MySQL Linux
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】
在Linux系统中使用tar.xz压缩包安装MySQL数据库的详细步骤。包括下载MySQL压缩包,解压到指定目录,创建mysql用户和组,设置目录权限,初始化MySQL,配置my.cnf文件,启动服务,以及修改root用户密码。此外,还提供了如何设置Windows远程登录MySQL服务器的方法。
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】