【问题标题】:SQL Command for copying table复制表的 SQL 命令
【发布时间】:2010-09-13 00:10:13
【问题描述】:

将表从一个数据库复制到另一个数据库的 SQL 命令是什么? 我正在使用 MySQL,我有两个数据库 x 和 y。假设我在 x 中有一个名为 a 的表,我需要将该表复制到 y 数据库。 如果问题太新手,请见谅。

谢谢。

【问题讨论】:

  • 通常有比使用 SQL 更好的方法。大多数 DBMS 将提供复制表的功能,或者在最坏的情况下,卸载和重新加载数据。

标签: sql mysql


【解决方案1】:

insert blah from select 别人建议的,对复制mysql下的数据很有好处。

如果要复制表结构,可能需要使用 show create table Tablename; 语句。

【讨论】:

    【解决方案2】:

    在命令行

    mysqldump somedb sometable -u user -p | mysql otherdb -u user -p
    

    然后输入两个密码。

    即使它们位于不同的主机上也可以使用(只需像往常一样添加 -h 参数),而插入选择则无法做到这一点。

    小心不要意外地通过管道连接到错误的数据库中,否则您最终会删除该数据库中的某个表! (转储将以“drop table sometable”开头)。

    【讨论】:

      【解决方案3】:

      如果您的两个数据库是分开的,最简单的做法是创建表的转储并将其加载到第二个数据库中。请参阅您的数据库手册以了解如何执行转储。

      否则您可以使用以下语法(对于 MySQL)

      INSERT INTO database_b.table (SELECT * FROM database_a.table)
      

      【讨论】:

        【解决方案4】:

        由于您的方案涉及两个不同的数据库,因此正确的查询应该是...

        INSERT INTO Y..dest_table (SELECT * FROM source_table);

        查询假设,您正在使用 X 数据库运行它。

        【讨论】:

          【解决方案5】:

          如果目标表不存在......

          CREATE TABLE dest_table AS (SELECT * FROM source_table);
          

          如果目标表确实存在

          INSERT INTO dest_table (SELECT * FROM source_table);
          

          警告:仅在 Oracle 中测试

          【讨论】:

          • 甲骨文?哈!它甚至无法区分空 varchar 和 null。 DB2 和我在你的玩具数据库上吐口水 :-)。
          • 我可能弄错了,但我认为对于 MySQL 这并不一定会保留原始表的键。
          【解决方案6】:

          如果您只想复制内容,您可能正在寻找select intohttp://www.w3schools.com/Sql/sql_select_into.asp。不过,这不会创建相同的副本,它只会将每一行从一个表复制到另一个。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-12-02
            • 2014-04-30
            • 2013-08-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-04-03
            相关资源
            最近更新 更多