我想使用代碼而不是使用像「MySQL Migration Toolkit」這樣的工具。我知道的最簡單的方法是打開連接(使用MySQL連接器)到DB1並讀取其數據。打開與DB2的連接並將數據寫入其中。有更好/最簡單的方法嗎?如何在2個MySQL數據庫之間傳輸數據?
回答
首先我要假設你是不是在把剛纔複製的位置數據/目錄,因爲如果你正在使用你現有的快照/備份/恢復可能就足夠了(並且測試你的備份/恢復程序進行討價還價)。
在這種情況下,如果兩個表的結構通常最快,而諷刺的是,最簡單的方法是在一端使用SELECT ... INTO OUTFILE ...,並且LOAD DATA INFILE ... on另一個。
有關詳細信息,請參閱http://dev.mysql.com/doc/refman/5.1/en/load-data.html和.../select.html。
對於瑣碎表下面的工作:
SELECT * FROM mytable INTO OUTFILE '/tmp/mytable.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\\\'
LINES TERMINATED BY '\\n' ;
LOAD DATA INFILE '/tmp/mytable.csv' INTO TABLE mytable
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\\\'
LINES TERMINATED BY '\\n' ;
我們也使用FIFO的有很大的影響,以避免實際寫入磁盤的開銷,或者如果我們確實需要寫入到磁盤由於某種原因,通過gzip管道。
即。
mkfifo /tmp/myfifo
gzip -c /tmp/myfifo > /tmp/mytable.csv.gz &
... SEL
ECT... INTO OUTFILE '/tmp/myfifo' .....
wait
gunzip -c /tmp/mytable.csv.gz > /tmp/myfifo &
... LOAD DATA INFILE /tmp/myfifo .....
wait
基本上,一個你直接表數據的FIFO可以壓縮它,它Munge時間或隧道它通過網絡你的心內容。
謝謝,儘管它在dev.mysql手冊中,但它不能正常工作。它給我這個錯誤: 你的SQL語法有錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以在第1行'\ n''附近使用正確的語法) 它不接受'\ n'..爲什麼? – Morano88 2010-07-16 22:06:06
堆棧溢出損壞了示例查詢。在源代碼中,ESCAPED BY子句中的斜槓被轉義,但轉換爲html時轉義丟失。對不起,我沒有注意到腐敗 - 我已經解決了上述問題。 – Recurse 2010-07-19 23:57:24
這正是我需要用來加快備份相當大的數據庫,但我無法讓你的例子工作。我可以創建FIFO,如果我使用mysqldump轉儲到管道,它的工作原理很好。但是,如果我嘗試使用SELECT ... INTO OUTFILE轉儲到管道,則會出現「myfifo已存在」錯誤。 – 2011-10-06 09:09:36
FEDERATED存儲引擎?不是這一羣人中速度最快的人,而是一次,偶然或少量的數據。假設你在談論2個服務器。隨着2個數據庫在同一個服務器,它會僅僅是:
INSERT INTO databasename1.tablename SELECT * FROM databasename2.tablename;
您可以使用mysqldump
和mysql
(命令行客戶端)。這些是命令行工具,在你寫的問題中,你不想使用它們,但仍然使用它們(即使通過在代碼中運行它們)是最簡單的方法; mysqldump
解決了很多問題。
您可以使select
從一個數據庫和insert
到另一個,這很容易。但是,如果您還需要傳輸數據庫模式(create table
s等),它會稍微複雜一些,這是我推薦mysqldump
的原因。但很多PHP-MySQL-admin工具也可以做到這一點,所以你可以使用它們或查看他們的代碼。
也許你可以使用MySQL複製。
如果啓用了當前服務器上的二進制日誌(並擁有所有的bin日誌),你可以在第二個服務器設置複製
從http://dev.mysql.com/doc/refman/5.0/en/rename-table.html:
只要兩個數據庫是相同的文件系統上,你可以用重命名錶,從一個數據庫移動表到另一個問題:在同一臺服務器上
RENAME TABLE current_db.tbl_name TO other_db.tbl_name;
- 1. 在線Mysql和SQL Server數據庫之間的數據傳輸
- 2. 在AWS RDS之間傳輸數據MySQL數據庫的
- 3. 用PDO在兩個數據庫之間傳輸mysql表格
- 4. 在兩個數據庫之間傳輸數據
- 5. 在兩個數據庫之間傳輸SQL數據
- 6. 在數據幀之間傳輸數據
- 7. 如何在UIViewControllers之間傳輸數據?
- 8. 複製2個mysql數據庫之間的特定數據
- 9. 同步MySQL數據庫之間的2
- 10. 在2個ViewControllers之間傳遞數據
- 11. 傳輸數據的兩個數據庫之間的
- 12. 兩個數據庫之間的部分數據傳輸
- 13. 在兩個iframe之間傳輸數據
- 14. 在服務器之間傳輸mysql數據庫
- 15. 在sqlite數據庫之間傳輸數據
- 16. 自動在數據庫之間傳輸數據
- 17. 在外部數據庫之間傳輸數據
- 18. 需要使用PHP在MySQL數據庫之間傳輸數據的幫助
- 19. html之間傳輸數據
- 20. 如何在mysql中的數據庫之間訪問數據?
- 21. 想要在2個Excel文件之間傳輸數據
- 22. 如何在SQL Server 2005數據庫之間傳輸sql加密數據?
- 23. 如何在不同的數據庫編碼之間傳輸數據?
- 24. 在2個獨立的Oracle數據庫之間合併數據
- 25. 兩個servlets之間的數據傳輸
- 26. 網絡/數據庫服務器之間的數據傳輸
- 27. 傳輸數據庫之間的數據 - influx-python
- 28. 數據庫之間的數據傳輸測量
- 29. 如何同步2本地主機之間的MySQL數據庫?
- 30. 非匹配結構化Mysql數據庫之間的數據傳輸
兩個數據庫或不同服務器上的兩個數據庫? – 2010-07-14 00:33:12
@Itay:我不確定天氣他們是否在同一臺服務器上?我知道這有所作爲,但我並沒有想到要問他們。我明天會做。 – Morano88 2010-07-14 00:38:17