2014-04-07 28 views
15

Verileri bir veritabanından diğerine geçirmem gerekiyor, ikisi de aynı yerel sistemde.MySQL Bir Veritabanından başka bir Veritabanına Ekle

tabloları ve sütunları farklı isimler var ve eski veritabanından tüm Sütunları göç olmamalıdır, bu nedenle

Select *

benim için çalışmaz.

INSERT INTO newDatabase.table1(Column1, Column2); 
SELECT oldDatabase.table1(column1, column2) FROM oldDatabase.table1 

ama got tüm Query hatası nedir ve ben bu nasıl düzeltebilirim bir #1064 - Syntax Error

nedir? peşin

Teşekkür

+0

Belki tablo isminden hemen sonra bir alana ihtiyacınız var ( – marcosh

+0

MySQL SELECT sözdizimi yanlış. El kitabını okumadığınızı tahmin ediyorum (https://dev.mysql.com/doc/refman/ 5.0/tr/select.html)? –

cevap

44

böyle gitmeli Sorgunuzda:

INSERT INTO newDatabase.table1 (Column1, Column2) 
SELECT column1, column2 FROM oldDatabase.table1; 

GÜNCELLEME

Bu cevap bile beklenenden daha dikkatini çekmenin olduğundan, bu cevap için daha olmalı . Her şeyden önce, cevabın kendisinden açıkça anlaşılmayabilir, ancak sütunların aynı ada sahip olması gerekmez. Yani, çok çalışacak aşağıdaki (sütunlar kendi tablolarda bulunmadığı varsayılarak):

INSERT INTO newDatabase.table1 (Column1, Column2) 
SELECT SomeOtherColumn, MoreColumns FROM oldDatabase.table1; 

Dahası, hatta tabloda gerçek sütunları olması gerekmez. Oldukça sık kullandığınız verileri dönüştürmek için örneklerinden biri şudur:

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; 

Yani, şimdi daha belirgin olabilir gibi kural olduğu sürece SEÇ sorgusu sorgu ihtiyaçlarını INSERT aynı sayıda sütun döndürür olarak VALUES yerine kullanılabilir.

+0

Çalıştı, teşekkürler :) – KhorneHoly

3

"Tablolar ve sütunlar farklı adlara sahip" dediniz, ancak yine de aynı adları kullanıyorsunuz. Bu deneyin:

INSERT INTO newDatabase.newtable1 (newColumn1, newColumn2) 
SELECT oldcolumn1, oldcolumn2 FROM oldDatabase.oldtable1; 
0
CREATE TABLE db2.table LIKE db1.table; 
INSERT INTO db2.table 
SELECT column_name FROM db1.table 
0
INSERT INTO db1.table SELECT * FROM db2.table; 

farklı db aynı tablolara veri kopyalamak istiyorum.

İlgili konular