2011-04-27 109 views

回答

1

我同意斯蒂芬所說的,但你可以通過類似的技術來實現它。但是你必須創建更詳細的查詢。就像你可以做一些事情:

INSERT INTO table1(field1, field2,...) SELECT field4,field1,... FROM table1; 

很明顯,你必須這樣做,以正確的順序,這IMO是一個很好的方法,所以你可以創建複雜的查詢連接等

2

我認爲更好的方法是使用ETL軟件。

根據Wikipedia

提取,轉換和加載(ETL)是在數據庫使用一個過程,其涉及:

  • 從外部來源
  • 轉化以適合業務需要(提取數據其中可以包括質量等級)
  • 將其加載到最終目標(數據庫或數據倉庫)
2

您正在討論提取,轉換,加載(ETL)腳本。

從非規範化數據到規範化數據是地獄。我希望你做相反 - 歸到非規範化 - 這是這樣的:

寫一個shell腳本:

  1. 轉儲第一個數據庫:mysqldump olddb >dump.sql
  2. 將其加載到一個乾淨的新數據庫:mysql newdb <dump.sql
  3. 編寫一堆CREATE TABLE AS SELECT ...命令並通過mysql運行它們 以創建非規格化數據的 。
  4. 放下你不關心的表。

將非規範化數據轉換爲規範化非常困難,需要一種特定於您所擁有的數據集的方法。