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

本文涉及的产品
RDS AI 助手,专业版
RDS Agent(兼容OpenClaw),2核4GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介: 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

这个不是 TDenginebug ,因为通过文本文件打开是正常的,另存为 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
5623 0
5-TDengine集成SpringBoot,MyBatis,MyBatisPlus
|
存储 Java 文件存储
|
网络协议 JavaScript Java
2-TDengine客户端连接,RESTful,JDBC
2-TDengine客户端连接,RESTful,JDBC
3794 0
2-TDengine客户端连接,RESTful,JDBC
|
缓存 物联网 数据库
InfluxDB vs TDengine :2025 年了,谁家用的数据库还不能高效读缓存?
在工业互联网和物联网的大数据应用场景中,实时数据的写入和查询性能至关重要。如何快速获取最新设备状态并实时处理数据,直接影响到业务的高效运转。本文将深入分析 TDengine 和 InfluxDB 在缓存机制上的差异,帮助读者更好地理解这两款主流时序数据库在性能优化方面的优劣。
1257 1
|
存储 SQL 关系型数据库
从 MySQL 到时序数据库 TDengine:Zendure 如何实现高效储能数据管理?
TDengine 助力广州疆海科技有限公司高效完成储能业务的数据分析任务,轻松应对海量功率、电能及输入输出数据的实时统计与分析,并以接近 1 : 20 的数据文件压缩率大幅降低存储成本。此外,taosX 强大的 transform 功能帮助用户完成原始数据的清洗和结构优化,而其零代码迁移能力更实现了历史数据从 TDengine OSS 与 MySQL 到 TDengine 企业版的平滑迁移,全面提升了企业的数据管理效率。本文将详细解读这一实践案例。
534 0
|
机器学习/深度学习 算法 数据可视化
Python的计算机视觉与图像处理
本文介绍了Python在计算机视觉和图像处理领域的应用,涵盖核心概念、算法原理、最佳实践及应用场景。重点讲解了OpenCV、NumPy、Pillow和Matplotlib等工具的使用,并通过代码实例展示了图像读写、处理和可视化的方法。实际应用包括自动驾驶、人脸识别、物体检测等。未来趋势涉及深度学习、边缘计算和量子计算,同时也讨论了数据不足、模型解释性和计算资源等挑战。
739 2
|
关系型数据库 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安装包-离线安装】
|
Prometheus Cloud Native 调度
Sentinel 新版本发布,提升配置灵活性以及可观测配套
Sentinel 新版本发布,提升配置灵活性以及可观测配套
1840 117
|
NoSQL 安全 Java
解决Unknown redis exception及event executor terminated错误的方法
解决这类问题时,保持耐心和细致是关键。通常,通过系统地检查和排除潜在原因,大多数问题最终都能被解决。
2639 1
|
机器学习/深度学习 存储 算法
通过强化学习策略进行特征选择
本文探讨了使用强化学习策略进行特征选择以提升机器学习模型性能。强调在高维数据集中,有效选择特征至关重要。文章介绍了马尔可夫决策过程在强化学习中的应用,并提出了一种新的特征选择方法。通过定义状态(特征子集)、动作(添加特征)、奖励(如准确性提升),建立了一个RL模型。此外,还介绍了Python库FSRLearning,用于实现这一方法。文中展示了如何使用该库,并通过与 sklearn 的 RFE 方法比较,证明了RL方法在选择模型特征方面的优越性。
439 3