database - 使用数据创建表的副本而不记录
问题描述
有没有一种简单的方法可以将表的数据复制到具有不同表名的同一个数据库而无需记录。
CREATE TABLE SCHEMA.NEW_TB LIKE SCHEMA.OLD_TB;插入 SCHEMA.NEW_TB (SELECT * FROM SCHEMA.OLD_TB);
上述 2 条语句将起作用,但该表包含大量数据。那么是否可以在不记录的情况下复制数据?
解决方案
在会话中关闭自动提交的情况下使用以下内容:
CREATE TABLE SCHEMA.NEW_TB LIKE SCHEMA.OLD_TB;
COMMIT;
ALTER TABLE SCHEMA.NEW_TB ACTIVATE NOT LOGGED INITIALLY;
INSERT INTO SCHEMA.NEW_TB
SELECT * FROM SCHEMA.OLD_TB;
COMMIT;
在同一事务中使用ALTER TABLE
和很重要。INSERT
推荐阅读
- apache-kafka - 如何使用 KSQL 将 kafka 集群中存在的所有主题存储到另一个主题
- javascript - 为什么预加载器在我的 React 应用程序中不起作用?
- javascript - 如何获取此 JSON 的名称或从 NodeJS Express 路由器获取路径?
- memory-management - 如何计算Bert的内存需求?
- angular - Angular Material 不应用样式
- python - 校准不失真以减小图像大小
- c# - 是否可以在可缩放的图片框图像(固定大小的图片框)上添加标签?
- kotlin-coroutines - kotlin coroutines - 为什么 Thread.sleep 不会在启动时暂停主线程?
- java - Firestore 查询不等于 Uid
- django - 如何从 Django REST 框架中获取数据?