如何复制、克隆或复制数据、结构、,并将MySQL表的索引转换为新表?
这是我到目前为止发现的。
这将复制数据和结构,但不包括指数:
create table {new_table} select * from {old_table};
这将复制结构和索引,但不包括数据:
create table {new_table} like {old_table};
如何复制、克隆或复制数据、结构、,并将MySQL表的索引转换为新表?
这是我到目前为止发现的。
这将复制数据和结构,但不包括指数:
create table {new_table} select * from {old_table};
这将复制结构和索引,但不包括数据:
create table {new_table} like {old_table};
当前回答
对于MySQL
CREATE TABLE newtable LIKE oldtable ;
INSERT newtable SELECT * FROM oldtable ;
对于MSSQL使用MyDatabase:
Select * into newCustomersTable from oldCustomersTable;
此SQL用于复制表,此处旧CustomersTable的内容将复制到新CustomersTable。确保数据库中不存在newCustomersTable。
其他回答
复制表的更好方法是只使用DDL语句。这样,与表中的记录数无关,您可以立即执行复制。
我的目的是:
DROP TABLE IF EXISTS table_name_OLD;
CREATE TABLE table_name_NEW LIKE table_name;
RENAME TABLE table_name TO table_name_OLD;
RENAME TABLE table_name _NEW TO table_name;
这避免了INSERT AS SELECT语句,在表中有大量记录的情况下,执行该语句可能需要时间。
我还建议创建一个PLSQL过程,如下例所示:
DELIMITER //
CREATE PROCEDURE backup_table(tbl_name varchar(255))
BEGIN
-- DROP TABLE IF EXISTS GLS_DEVICES_OLD;
SET @query = concat('DROP TABLE IF EXISTS ',tbl_name,'_OLD');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- CREATE TABLE GLS_DEVICES_NEW LIKE GLS_DEVICES;
SET @query = concat('CREATE TABLE ',tbl_name,'_NEW LIKE ',tbl_name);
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- RENAME TABLE GLS_DEVICES TO GLS_DEVICES_OLD;
SET @query = concat('RENAME TABLE ',tbl_name,' TO ',tbl_name,'_OLD');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
-- RENAME TABLE GLS_DEVICES_NEW TO GLS_DEVICES;
SET @query = concat('RENAME TABLE ',tbl_name,'_NEW TO ',tbl_name);
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END//
DELIMITER ;
祝您有个美好的一天!亚历克斯
MySQL方式:
CREATE TABLE recipes_new LIKE production.recipes;
INSERT recipes_new SELECT * FROM production.recipes;
在我尝试了上面的解决方案后,我想出了自己的方法。
我的解决方案有点手动,需要DBMS。
首先,导出数据。
第二,打开导出数据。
第三,用新表名替换旧表名。
第四,更改数据中的所有触发器名称(我使用MySQL,不更改触发器名称时会显示错误)。
第五,将编辑的SQL数据导入数据库。
除了上面的解决方案之外,您可以使用AS将其集成到一条线上。
CREATE TABLE tbl_new AS SELECT * FROM tbl_old;
// To copy specific column data use this one:
CREATE TABLE ut_axis_existrec LIKE ut_karvy_annexure; // To create new table
INSERT INTO ut_axis_existrec
(funding_ac,micr_no, warrant_no,
amount,invname,mfundcode,funding_dt,status,remarks1,amc_remark,created_at)
SELECT
t1.funding_ac,
t1.micr_no,
t1.warrant_no,
t1.amount,
t1.invname,
t1.mfund_code,
t1.funding_dt,
t1.status,
t1.remarks1,
t1.created_at
from ut_axis_karvy
inner join
ut_axis_karvy_master as t2
on t1.micr_no = t2.micr_no;