【发布时间】:2010-09-13 00:10:13
【问题描述】:
将表从一个数据库复制到另一个数据库的 SQL 命令是什么? 我正在使用 MySQL,我有两个数据库 x 和 y。假设我在 x 中有一个名为 a 的表,我需要将该表复制到 y 数据库。 如果问题太新手,请见谅。
谢谢。
【问题讨论】:
-
通常有比使用 SQL 更好的方法。大多数 DBMS 将提供复制表的功能,或者在最坏的情况下,卸载和重新加载数据。
将表从一个数据库复制到另一个数据库的 SQL 命令是什么? 我正在使用 MySQL,我有两个数据库 x 和 y。假设我在 x 中有一个名为 a 的表,我需要将该表复制到 y 数据库。 如果问题太新手,请见谅。
谢谢。
【问题讨论】:
insert blah from select 别人建议的,对复制mysql下的数据很有好处。
如果要复制表结构,可能需要使用 show create table Tablename; 语句。
【讨论】:
在命令行
mysqldump somedb sometable -u user -p | mysql otherdb -u user -p
然后输入两个密码。
即使它们位于不同的主机上也可以使用(只需像往常一样添加 -h 参数),而插入选择则无法做到这一点。
小心不要意外地通过管道连接到错误的数据库中,否则您最终会删除该数据库中的某个表! (转储将以“drop table sometable”开头)。
【讨论】:
如果您的两个数据库是分开的,最简单的做法是创建表的转储并将其加载到第二个数据库中。请参阅您的数据库手册以了解如何执行转储。
否则您可以使用以下语法(对于 MySQL)
INSERT INTO database_b.table (SELECT * FROM database_a.table)
【讨论】:
由于您的方案涉及两个不同的数据库,因此正确的查询应该是...
INSERT INTO Y..dest_table (SELECT * FROM source_table);
查询假设,您正在使用 X 数据库运行它。
【讨论】:
如果目标表不存在......
CREATE TABLE dest_table AS (SELECT * FROM source_table);
如果目标表确实存在
INSERT INTO dest_table (SELECT * FROM source_table);
警告:仅在 Oracle 中测试
【讨论】:
如果您只想复制内容,您可能正在寻找select into:
http://www.w3schools.com/Sql/sql_select_into.asp。不过,这不会创建相同的副本,它只会将每一行从一个表复制到另一个。
【讨论】: