开发者社区 > 数据库 > 数据仓库 > 正文

云数据仓库ADB NSERT into SELECT和实时写入方式向同一个表中写入数据是否会有问题?

云数据仓库ADB NSERT into SELECT和实时写入方式(INSERT INTO、REPLACE INTO、DELETE、UPDATE)向同一个表中写入数据是否会有问题

展开
收起
-Feng、冯冯 2024-04-24 08:17:58 18 0
1 条回答
写回答
取消 提交回答
  • 向同一个表中同时使用INSERT INTO SELECT和实时写入方式(包括INSERT INTO、REPLACE INTO、DELETE、UPDATE)来写入数据是不被允许的,因为这会导致实时写入的数据被丢弃。换句话说,这种操作可能导致数据丢失或不一致,违反了数据完整性和一致性原则。
    参考链接:

    关于开发参考-SQL手册-INSERT OVERWRITE SELECT-注意事项

    同时,对于实时写入操作,有以下建议:

    使用批量打包方式执行INSERT和REPLACE INTO语句可以提高数据写入性能。建议每个语句写入的数据行数超过1000行,但总数据量不超过16MB。
    批量写入时可能会出现较高的写入延迟,且在遇到写入错误时需要进行重试以确保数据成功写入。通过设置表的主键,可以有效避免因重试导致的数据重复问题。

    参考链接:

    1. 关于实践教程-数据变更最佳实践
      另外,INSERT INTO和INSERT OVERWRITE SELECT的具体功能如下:

    INSERT INTO用于向表中插入数据,遇到主键重复时会自动忽略当前写入数据,即其行为等同于INSERT IGNORE INTO。

    参考链接:

    1. 关于开发参考-SQL手册-INSERT INTO

    INSERT OVERWRITE SELECT允许将SELECT语句的结果插入到指定表中。要求SELECT语句中各列的数据类型与目标表对应列的数据类型相匹配。如果SELECT语句列数多于目标表,则写入失败;若列数少于目标表,目标表中多余列会填充默认值(无默认值时为NULL)。

    参考链接:

    1. 关于开发参考-SQL手册-INSERT OVERWRITE SELECT
      在处理大数据量导入时,建议采用异步提交导入任务的方式,以避免客户端与ADB MySQL服务端连接中断导致数据导入失败。
      参考链接:
    2. 关于操作指南-数据开发-异步提交导入任务-应用场景

    此回答整理自钉群“云数据仓库ADB-开发者群”

    2024-04-24 16:01:27
    赞同 展开评论 打赏

热门讨论

热门文章

相关电子书

更多
消电行业数据中台解决方案白皮书 立即下载
(终极版)2020阿里云金融数据中台报告 立即下载
2020年中国乳制品行业数据中台研究报告 立即下载