簡體   English   中英

mysql 將數據從一個數據庫遷移到另一個數據庫

[英]Migrating data from one database to another database in mysql

是否可以將具有不同列名的相關數據從一個數據庫遷移到另一個數據庫? 我在這里談論的是非常大量的數據。 有人有想法嗎? 我試過將它導出到 CSV 並導入到其他數據庫,但我收到錯誤消息:

invalid column count in CSV input in line 1

因此,如果有人有有效的方法來做到這一點,請分享。 或者,如果有人可以通過 Excel 中的 CSV 映射指導 mo 如何正確執行此操作,我將不勝感激

這其中有兩種情況:

  1. 數據庫存儲在同一台服務器上
  2. 數據庫存儲在不同的服務器上

解決方案 1:同一服務器中的數據庫

您只需要在目標表中插入數據:

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

筆記

  1. select語句必須包含您需要復制到目標表的字段。
  2. select語句中的字段必須與insert部分字段列表中指定的字段順序一致

解決方案2:不同服務器上的數據庫

我會將數據導出到純文本文件,然后導入。 我個人更喜歡 .csv 文件,但這取決於您。

您有兩種可能性:使用select... into outfile或使用系統終端(命令窗口)。

一種。 使用select... into outfileload data

  1. dbSource所在的服務器中:

     select ... from dbSource.tblSource into outfile [your destination file] ...
  2. 將文件復制到目標服務器。

  3. dbDestination所在的服務器中:

    加載數據本地 infile [您的文件] ...

筆記

  1. select語句中的字段必須與insert部分字段列表中指定的字段順序一致
  2. 檢查 MySQL 參考手冊以了解select... into outfileload data...的適當用法load data...

使用終端

  1. 在 Linux(或其他 Unix 系統)中,打開終端窗口並輸入以下命令:

     $ mysql -h [sourceServer] -u [yourUser] -p[yourPassword] dbSource -e"select ..." | sed 's/\\t/,/g' > yourDestinationFile.csv
  2. 將文件復制到目標服務器

  3. 啟動 MySQL 控制台,並使用 `load data ...`

筆記

  1. select語句中的字段必須與insert部分字段列表中指定的字段順序一致
  2. | sed 's/\\t/,/g' | sed 's/\\t/,/g'部分將 mysql 查詢的輸出轉換為 .csv 文件。 您可以使用另一個分隔符代替, 有關sed進一步參考,請查看http://lowfatlinux.com/linux-sed.html
  3. 目標文件將具有行標題,因此您在導入數據時需要忽略它們。 只需在load data...語句的末尾添加ignore 1 lines

將數據從一個數據庫復制到另一個數據庫是一項非常簡單的任務。 希望這為您指明了正確的方向。

忠告:下載您的 MySQL 版本的參考手冊並隨身攜帶。 您可以在那里找到大部分解決方案。

一種簡單的方法是使用以下語法:

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

用這個:

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

謹防!!!

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

僅當 id 跟隨時才有效。

選擇省略 ID 的字段,以便自動增量可以為導入的行提供新 ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM