如何将数据插入到TiDB中-平凯星辰

why 1338 2023-07-03

本文关于(如何将数据插入到TiDB中-平凯星辰)。

如何将数据插入到TiDB中-平凯星辰


插入数据

此页面将展示使用 SQL 语言,配合各种编程语言将数据插入到 TiDB 中。


在开始之前

在阅读本页面之前,你需要准备以下事项:

  • 使用 TiDB Serverless 构建 TiDB 集群。

  • 阅读数据库模式概览,并创建数据库、创建表、创建二级索引。


插入行

假设你需要插入多行数据,那么会有两种插入的办法,假设需要插入 3 个玩家数据:

  • 一个多行插入语句:

    INSERT INTO `player` (`id`, `coins`, `goods`) VALUES (1, 1000, 1), (2, 230, 2), (3, 300, 5);
  • 多个单行插入语句:

    INSERT INTO `player` (`id`, `coins`, `goods`) VALUES (1, 1000, 1);INSERT INTO `player` (`id`, `coins`, `goods`) VALUES (2, 230, 2);INSERT INTO `player` (`id`, `coins`, `goods`) VALUES (3, 300, 5);

一般来说使用一个多行插入语句,会比多个单行插入语句快。

  • SQL

  • Java

  • Golang

  • Python

在 SQL 中插入多行数据的示例:

CREATE TABLE `player` (`id` INT, `coins` INT, `goods` INT);INSERT INTO `player` (`id`, `coins`, `goods`) VALUES (1, 1000, 1), (2, 230, 2);

有关如何使用此 SQL,可查阅连接到 TiDB 集群文档部分平凯星辰,按文档步骤使用客户端连接到 TiDB 集群后,输入 SQL 语句即可。


批量插入

如果你需要快速地将大量数据导入 TiDB 集群,最好的方式并不是使用 INSERT 语句,这并不是最高效的方法,而且需要你自行处理异常等问题。推荐使用 PingCAP 提供的一系列工具进行数据迁移

  • 数据导出工具:Dumpling。可以导出 MySQL 或 TiDB 的数据到本地或 Amazon S3 中。

  • 数据导入工具:TiDB Lightning。可以导入 Dumpling 导出的数据、CSV 文件,或者 Amazon Aurora 生成的 Apache Parquet 文件。同时支持在本地盘或 Amazon S3 云盘读取数据。

  • 数据同步工具:TiDB Data Migration。可同步 MySQL、MariaDB、Amazon Aurora 数据库到 TiDB 中。且支持分库分表数据库的迁移。

  • 数据备份恢复工具:Backup & Restore (BR)。相对于 Dumpling,BR 更适合大数据量的场景。


避免热点

在设计表时需要考虑是否存在大量插入行为,若有,需在表设计期间对热点进行规避。请查看创建表 - 选择主键部分,并遵从选择主键时应遵守的规则。

更多有关热点问题的处理办法,请参考 TiDB 热点问题处理文档平凯星辰


主键为 AUTO_RANDOM 表插入数据

在插入的表主键为 AUTO_RANDOM 时,这时默认情况下,不能指定主键。例如 bookshop 数据库中,可以看到 users 表 的 id 字段含有 AUTO_RANDOM 属性。

此时,不可使用类似以下 SQL 进行插入:

INSERT INTO `bookshop`.`users` (`id`, `balance`, `nickname`) VALUES (1, 0.00, 'nicky');

将会产生错误:

ERROR 8216 (HY000): Invalid auto random: Explicit insertion on auto_random column is disabled. Try to set @@allow_auto_random_explicit_insert = true.

这是旨在提示你,不建议在插入时手动指定 AUTO_RANDOM 的列。这时,你有两种解决办法处理此错误:

  • (推荐) 插入语句中去除此列,使用 TiDB 帮你初始化的 AUTO_RANDOM 值。这样符合 AUTO_RANDOM 的语义。

    INSERT INTO `bookshop`.`users` (`balance`, `nickname`) VALUES (0.00, 'nicky');
  • 如果你确认一定需要指定此列,那么可以使用 SET 语句通过更改用户变量的方式,允许在插入时,指定 AUTO_RANDOM 的列。

    SET @@allow_auto_random_explicit_insert = true;INSERT INTO `bookshop`.`users` (`id`, `balance`, `nickname`) VALUES (1, 0.00, 'nicky');


使用 HTAP

在 TiDB 中,使用 HTAP 能力无需你在插入数据时进行额外操作。不会有任何额外的插入逻辑,由 TiDB 自动进行数据的一致性保证。你只需要在创建表后,开启列存副本同步,就可以直接使用列存副本来加速你的查询。


上述就是小编为大家整理的(如何将数据插入到TiDB中-平凯星辰)
***

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MySQL数据库怎么给表设置约束
下一篇:怎么使用mysql模拟redis
相关文章