在mysql中将数据从一个数据库迁移到另一个数据库

时间:2013-04-01 21:54:33

标签: mysql

是否可以将相关数据从一个数据库迁移到另一个数据库但具有不同的列名?我在这里谈论非常大量的数据。有人有想法吗?我已经尝试将其导出为CSV并导入到其他数据库但我收到的错误是:

invalid column count in CSV input in line 1

因此,如果有人有效率和有效的方式,请分享。 或者,如果任何人都可以通过这个CSV映射指导mo如何正确地执行它,我将非常感激

3 个答案:

答案 0 :(得分:6)

这有两种情况:

  1. 数据库存储在同一服务器中
  2. 数据库存储在不同的服务器中
  3. 解决方案1:同一服务器中的数据库

    您只需要在目标表中插入数据:

    insert into dbDestination.tblDestination (field1, field2, ...)
    select ...
    from dbSource.tblSource
    

    备注

    1. select语句必须包含您需要复制到目标表的字段。
    2. select语句中的字段必须与insert部分
    3. 中字段列表中指定的字段的顺序相同

      解决方案2:不同服务器中的数据库

      我会将数据导出到纯文本文件,然后导入它。我个人更喜欢.csv文件,但它取决于你。

      您有两种可能:使用select... into outfile或使用系统终端(命令窗口)。

      <强>一个。使用select... into outfileload data

      1. dbSource所在的服务器中:

        选择...... 来自dbSource.tblSource 进入outfile [你的目标文件] ...

      2. 将文件复制到目标服务器。

      3. dbDestination所在的服务器中:

        加载数据本地infile [你的文件] ...

      4. 备注

        1. select语句中的字段必须与insert部分
        2. 中字段列表中指定的字段的顺序相同
        3. 检查MySQL参考手册,了解select... into outfileload data...
        4. 的正确用法

          <强>湾使用终端

          1. 在Linux(或其他Unix系统)中,打开终端窗口并输入以下命令:

            $ mysql -h [sourceServer] -u [yourUser] -p [yourPassword] dbSource -e&#34; select ...&#34; | sed&#39; s / \ t /,/ g&#39; &GT; yourDestinationFile.csv

          2. 将文件复制到目标服务器

          3. 启动MySQL控制台,并使用`load data ...``

          4. 备注

            1. select语句中的字段必须与insert部分
            2. 中字段列表中指定的字段的顺序相同
            3. | sed 's/\t/,/g'部分将mysql查询的输出转换为.csv文件。您可以使用其他分隔符而不是,。有关sed支票http://lowfatlinux.com/linux-sed.html
            4. 的进一步参考
            5. 目标文件将包含行标题,因此您在导入数据时需要忽略它们。只需在ignore 1 lines句子的末尾添加load data...

            6. 将数据从一个数据库复制到另一个数据库是一项非常简单的任务。希望这能指出你正确的方向。

              建议:下载MySQL版本的参考手册并随时掌握。您可以在那里找到大部分解决方案。

答案 1 :(得分:1)

一种简单的方法是使用以下语法:

INSERT INTO Database.Table(field 1, field 2,...)
SELECT * FROM Database2.Table2;

答案 2 :(得分:0)

当心!!!

INSERT INTO dbname.tablename(fields...);
SELECT * FROM olddatabase.oldtable;

仅在遵循id的情况下有效。

选择省略ID的字段,以便自动递增功能可以为导入的行提供新的ID。