2015-10-19 52 views
0

我有很多的sql表。這些表是「依賴的」,即在表之間定義了對外鍵的約束。 我需要將表格從sql轉移到csv。什麼是正確的方法來做到這一點:從sql傳輸數據模型表到csv

  • 定義表完全按照他們在sql中定義? (我應該如何處理外鍵?)
  • 嘗試通過連接基於外鍵的現有鍵來生成其他表以隱藏外鍵依賴關係?

可能還有其他選擇嗎?優缺點都有什麼 ? 謝謝,

注:這是需要爲在數據

+0

做到這一點的最佳方法取決於csv數據的預期用途。 –

+0

@Dan Bracuk - 有一個應用程序讀取數據並對數據運行分析(機器學習)。新數據每天插入表 – Yakov

+0

https://en.wikipedia.org/wiki/Extract,_transform,_load –

回答

1

我建議創建SQL視圖包含從您在您的CSV需要在以後的所有表中的所有信息,運行一些anylitics另一個應用程序。 該視圖已經實現了依賴關係(來自不同表格的兩行的鏈接)並將它們連接在一起。

由於該視圖將爲您完成所有工作,因此創建新表格將比您的第二個建議更容易。

我想你會需要你的依賴。 所以你不應該忽視它們。 下面是一個簡單的例子,它們是如何工作的: 可以說你有兩張表,第一張是第一張,第二張是汽車。在人表中你有3列:ID,姓名,年齡。在第二個你有ID,車。要查看哪個人有哪輛車,您只需檢查第一張表中哪個車輛在第二個車輛中具有哪個值。 如果您在視圖中將它們鏈接在一起,則結果是包含列ID,人員,年齡,車的單個表。

相同的視圖。 稍後,您可以將視圖導出爲CSV。

也許我可以幫助你更好,如果你定義你的需求更詳細一點。 表中有什麼樣的數據,它們是如何鏈接的(主鍵/副鍵是什麼)。

+0

你能解釋一下爲什麼嗎?並對我提出的提案進行評論/比較 – Yakov

+0

在CSV中,無法顯示錶格之間的依賴關係。如果你想從一個數據到另一個數據,最簡單的方法就是創建一個視圖。 SQL將生成一個表併爲您加入所有數據。如果以後需要拆分它們,則可以在代碼中進行拆分,並按照您希望的那樣「還原」依賴項。但爲了從SQL獲取所有數據,我認爲最簡單的方法就是創建一個視圖。 –

+0

顯示依賴關係?我不確定我確實需要他們。我可以給列寫同一個名字......是好的嗎?在實踐中如何「使用」這些依賴性?順便說一句,SQL的所有依賴我有定義爲ON刪除沒有行動更新沒有行動 – Yakov