Mysql

如何使用臨時表從另一個數據庫更新我的數據庫?

  • June 24, 2015

我想每天使用另一個大型數據庫更新我的數據庫表,使用臨時表並且不返回結果。我該如何更新它?

這是我的臨時表:

use data_pro; 
DROP TABLE IF EXISTS datasll.table1;
CREATE TEMPORARY TABLE IF NOT EXISTS datasll.table1 
SELECT 
cs.id,
cs.fk_c,
cs.so, 
cs.pr,
cs.date,
cs.o_p,
cs.sh_c,
cs.x,
LEFT(cs.x,2),
cs.doc,
cs.fk_op,
cc.id_c_c,
cc.name,
cc.descrip,
left(cc.n_o,3) as bon,
cc.fk_c_br,
cc.de,
cc.m_mat,
cc.color, 
cc.fk_c_s
FROM
  data_pro.catas cs

LEFT OUTER JOIN
data_pro.c_co cc ON  data_pro.cs.fk_c_c = data_pro.cc._id_cc
WHERE
data_pro.cc.pap = 1 AND   data_pro.cc.stati = 'b';

Many thanks for any help.

您確實可以使用儲存過程來刷新數據庫中的數據。它只是意味著對適合您的數據的 INSERT 和 UPDATE 進行編碼。

如果您用新數據替換現有數據,您可以使用:

INSERT INTO ... SELECT FROM… 語法,在刪除現有數據後,從查詢中提取數據並將其插入到現在為空的表中。當然,您可以執行單獨的步驟來更新許多表,一次一個。

語法文件在INSERT INTO ... SELECT FROM這裡:https ://dev.mysql.com/doc/refman/5.7/en/insert-select.html

如果您只想UPDATE ... SELECT FROM獲取表中的某些值,則可以在此處遵循不同的範例:

https://stackoverflow.com/questions/1262786/mysql-update-query-based-on-select-query

這裡還描述了一般UPDATE語法:https ://dev.mysql.com/doc/refman/5.7/en/update.html

如果你要創建一個新的條目,你可以這樣做

插入表名選擇查詢

如果您想根據某些值更新表,但需要通過加入從其他表中獲取值(選擇您提到的查詢),您可以將這些值儲存在臨時表中。然後您可以通過 do 迭代這些值-while 或 Cursor,您可以更新目標表(要更新的表)。

臨時表創建

聲明@TempTableName 表(Column1 數據類型,.. ColumnN dataTyPE)

插入您的評論中提到的@TempTableName 選擇查詢。

迭代表並更新目標表。請參閱 sql 中的游標以迭代臨時表。

如果答案有幫助,請投票。

引用自:https://dba.stackexchange.com/questions/104938