2012-07-11 47 views
0

我需要從舊用戶數據庫遷移到新數據....但幸運的是,密碼和鹽字段的值在兩者上都是相同的,但列名是不同的(舊桌上:用戶passhash->祕密,在新表:新用戶密碼 - >鹽)生成帶有更改列名稱的MySQL插入

如何從我現有的用戶數據生成插入轉儲?每當我這樣做

SELECT id, 
    username, 
LOWER(username) AS username_canonical, 
    email, 
    LOWER(email) AS email_canonical, 
    passhash AS 'password', 
    secret AS salt, 
    1 AS enabled, 
    'a:0:{}' AS roles, 
    0 AS credentials_expired, 
    0 AS expired, 
    0 AS locked, 
    uploaded, 
    downloaded, 
    torrent_pass, 
    0 AS torrent_pass_version 
FROM 
    temp2.users AS fos_user 
WHERE enabled = 'yes' ; 

我可以看到在phpMyAdmin正確列出的值...但是,當我出口的結果,我看到在舊結構插入:

INSERT INTO `fos_user` (`id`, `username`, `username`, `email`, 
    `email`, `passhash`, `secret`, `enabled`, `a:0:{}`, 
    `credentials_expired`, `expired`, `locked`, `uploaded`, 
    `downloaded`, `torrent_pass`, `torrent_pass_version`) 
VALUES.... 
+0

更具體一點:在舊錶上:user passhash-> secret,在新表上:newuser password-> salt – Razvan 2012-07-11 16:48:08

回答

1

爲什麼不能做INSERT,並在同一時間有這樣的選擇:

INSERT INTO `fos_users` (username, password, salt ...) 
SELECT LOWER(username), passhash, secret, ... 
FROM users; 

當然,這假設你可以在新的數據庫中的數據集老,至少是暫時...

+0

OP似乎知道爲什麼生成的查詢具有表名稱作爲別名名稱,但在列名稱的情況下不會應用相同的名稱。以及如何實現它的列名呢? – 2012-07-11 16:47:42

相關問題