假如要自己实现create table as 语法支持

【概述】 oracle的create table as select * from a。这种语法非常方便,以前经常用来做表备份。请问如果要在tidb里面实现这个语法,需要怎么开发?

题外话:
mysql 里这个语法很不方便,ddl+dml 不是一个好语句

通过底层实现数据库文件复制并重新命名,并在元数据进行信息添加就可以实现了,速度又快又不会出现错误,当然这个适合全量复制的那种

不现实,带条件的怎么复制

先create table like,在BATCH into看能不能解决你的问题

基本上不现实,还是等着原生支持吧

不考虑易用性。感觉实现难度不大。

不如dumpling导出,然后create table like,最后lightning导入,batch on非事务语句效率还是比较差

你可以先建表,再用insert into select *

1 个赞

这样操作比较繁琐

繁琐是繁琐了一点,但是执行效率比batch on高不少,batch on太慢了

两步:create table new_table_name like old_table_name;
insert into new_table_name select * from old_table_name;

看来还是得分两步走呀

CREATE TABLE new_table AS SELECT column1, column2, function(column3) AS new_column FROM old_table WHERE condition;

建表,然后insert into select * from …

1 个赞

insert into

只能create table;再进行 insert into select

1、create table xxx like aaa;
2、insert into xxx select * from aaa;

先建表,再插入