84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
我需要將資料從一個資料庫遷移到另一個資料庫,兩者都在同一臺本機系統上。
表和列的名稱不同,我不必遷移舊資料庫中的所有列,所以
Select * 對我無效。
Select *
INSERT INTO newDatabase.table1(Column1, Column2); SELECT oldDatabase.table1(column1, column2) FROM oldDatabase.table1
但是我得到了一個 #1064 - 語法錯誤
#1064 - 語法錯誤
我的查詢中有什麼錯誤,我該如何修復?
提前感謝
INSERT INTO db1.table SELECT * FROM db2.table;
如果您想將資料複製到不同資料庫的相同表中。
您的查詢應該是這樣的:
INSERT INTO newDatabase.table1 (Column1, Column2) SELECT column1, column2 FROM oldDatabase.table1;
更新
由於這個答案引起了比我預期的更多的關注,我應該對這個答案進行擴展。首先,從答案本身可能不明顯,但是列名不需要相同。所以,以下也可以工作(假設列在各自的表中存在):
INSERT INTO newDatabase.table1 (Column1, Column2) SELECT SomeOtherColumn, MoreColumns FROM oldDatabase.table1;
此外,它們甚至不需要是表中的真實欄位。我經常使用的一個轉換資料的範例之一是:
INSERT INTO newDatabase.users (name, city, email, username, added_by) SELECT CONCAT(first_name, ' ', last_name), 'Asgard', CONCAT(first_name,'@gmail.com'), CONCAT(first_name,last_name), 'Damir' FROM oldDatabase.old_users;
所以,現在可能更明顯的規則是,只要SELECT查詢傳回與INSERT查詢所需的列數相同的列,它就可以用於VALUES的位置。
如果您想將資料複製到不同資料庫的相同表中。
您的查詢應該是這樣的:
更新
由於這個答案引起了比我預期的更多的關注,我應該對這個答案進行擴展。首先,從答案本身可能不明顯,但是列名不需要相同。所以,以下也可以工作(假設列在各自的表中存在):
此外,它們甚至不需要是表中的真實欄位。我經常使用的一個轉換資料的範例之一是:
所以,現在可能更明顯的規則是,只要SELECT查詢傳回與INSERT查詢所需的列數相同的列,它就可以用於VALUES的位置。