簡體   English   中英

MySQL批量插入引用ID從另一個表

[英]mysql bulk insert referring ID from another table

我有兩個表:

table_user
======================================
UID     UserName
1       UserA
2       UserB
3       UserC


table_score
==============================
UID     Date         Score
2       18/7/2013     100
2       19/7/2013     150

我需要將得分歷史記錄數據(數千行)批量插入table_score。 歷史記錄數據僅包含用戶名,日期和分數。

我正在做的是讓我的PHP腳本從MySQL加載給定UserName的UID,將UID添加到批量插入SQL中,然后將其發送回MySQL。 這需要PHP和MySQL之間進行2次通信。 我為其他用戶重復以上操作。

是否可以讓MySQL插入日期和分數,並在一個SQL中根據給定的UserName自動填寫UID?

為MySql導入大量數據的最快方法是使用LOAD DATA INFILE

如果您有像這樣的逗號分隔文件

"UserB","18/7/2013",100
"UserB","19/7/2013",150
"UserC","20/7/2013",140

然后用這樣的查詢加載它

LOAD DATA LOCAL INFILE '/path/to/your/file.csv' 
INTO TABLE table_score 
   FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' 
   LINES TERMINATED BY '\n' -- or '\r\n' if it's Windows
(@username, @date, @score) 
SET uid =  
    (
      SELECT uid 
        FROM table_user 
       WHERE username = @username
       LIMIT 1
    ),
    date = STR_TO_DATE(@date, '%d/%m/%Y'),
    score = @score;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM