如何复制、克隆或复制数据、结构、,并将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};
当前回答
值得一提的是,检查表之前是否已存在尝试复制它:
CREATE TABLE IF NOT EXISTS new_table LIKE old_table;
INSERT new_table
SELECT * FROM old_table;
正如前面的回答所说,这将复制结构、数据和表的所有从属对象。
请参见MySql教程:
其他回答
复制表的更好方法是只使用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 ;
祝您有个美好的一天!亚历克斯
转到phpMyAdmin并选择原始表,然后在“复制表到(database.table)”区域中选择“操作”选项卡。选择要复制的数据库并为新表添加名称。
要创建表结构,请仅使用以下代码:
CREATE TABLE new_table LIKE current_table;
要将数据从表复制到另一个表,请使用以下代码:
INSERT INTO new_table SELECT * FROM current_table;
除了上面的解决方案之外,您可以使用AS将其集成到一条线上。
CREATE TABLE tbl_new AS SELECT * FROM tbl_old;
要使用索引和触发器进行复制,请执行以下两个查询:
CREATE TABLE new_table LIKE old_table;
INSERT INTO new_table SELECT * FROM old_table;
要仅复制结构和数据,请使用以下方法:
CREATE TABLE new_table AS SELECT * FROM old_table;
我以前问过这个问题:
复制包含索引的MySQL表