[英]Migrating data from one database to another database in mysql
是否可以將具有不同列名的相關數據從一個數據庫遷移到另一個數據庫? 我在這里談論的是非常大量的數據。 有人有想法嗎? 我試過將它導出到 CSV 並導入到其他數據庫,但我收到錯誤消息:
invalid column count in CSV input in line 1
因此,如果有人有有效的方法來做到這一點,請分享。 或者,如果有人可以通過 Excel 中的 CSV 映射指導 mo 如何正確執行此操作,我將不勝感激
這其中有兩種情況:
您只需要在目標表中插入數據:
insert into dbDestination.tblDestination (field1, field2, ...)
select ...
from dbSource.tblSource
筆記
select
語句必須包含您需要復制到目標表的字段。select
語句中的字段必須與insert
部分字段列表中指定的字段順序一致我會將數據導出到純文本文件,然后導入。 我個人更喜歡 .csv 文件,但這取決於您。
您有兩種可能性:使用select... into outfile
或使用系統終端(命令窗口)。
一種。 使用select... into outfile
並load data
在dbSource
所在的服務器中:
select ... from dbSource.tblSource into outfile [your destination file] ...
將文件復制到目標服務器。
在dbDestination
所在的服務器中:
加載數據本地 infile [您的文件] ...
筆記
select
語句中的字段必須與insert
部分字段列表中指定的字段順序一致select... into outfile
並load data...
的適當用法load data...
灣使用終端
在 Linux(或其他 Unix 系統)中,打開終端窗口並輸入以下命令:
$ mysql -h [sourceServer] -u [yourUser] -p[yourPassword] dbSource -e"select ..." | sed 's/\\t/,/g' > yourDestinationFile.csv
將文件復制到目標服務器
啟動 MySQL 控制台,並使用 `load data ...`
筆記
select
語句中的字段必須與insert
部分字段列表中指定的字段順序一致| sed 's/\\t/,/g'
| sed 's/\\t/,/g'
部分將 mysql 查詢的輸出轉換為 .csv 文件。 您可以使用另一個分隔符代替,
。 有關sed
進一步參考,請查看http://lowfatlinux.com/linux-sed.htmlload 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.