2011-02-17 36 views
0

嘿所有, 我有兩個數據庫。一個145000行和約。 12列。我有另一個大約40000行和5列的數據庫。我試圖根據兩列值進行比較。例如,如果在CSV中#1列1表示100-199,第二列表示Main St(意思是該行包含在主要街道的100塊內),那麼我將如何將其與CSV中的相似兩列進行比較# 2。我需要將CSV#1中的每一行與CSV#2中的每一行進行比較。如果匹配,我需要將每個匹配行的5列附加到CSV#2行的末尾。因此,CSV#2的列數會顯着增加,並且有重複的條目,不管列的排列方式如何。有關如何將兩列與另一個數據庫中的另外兩列進行比較,然後遍歷所有行的任何建議。到目前爲止,我一直在使用python和import csv,但是這部分問題讓我難以理解。使用python添加非唯一行到另一個數據庫

在此先感謝 -John

+0

對不起,我的意思是說:如果有一場比賽,我需要每個匹配行的#### 12 ####列追加到的CSV#行的最後2 –

+0

你自己不要發表評論題。這是**你的**問題。請**更新**您的問題並刪除評論。另外,請考慮使用段落將大塊文本分成不同的部分,以便我們閱讀它。 –

+1

您是否考慮過使用數據庫而不是CSV文件?這將使這很容易。 –

回答

2
  1. CSV文件不是數據庫。一個csv文件只是文本塊的行;一個合適的數據庫(例如PostgreSQLMysqlSQL ServerSQLite或許多其他)爲您提供正確的數據類型和表連接和索引以及行迭代和正確處理多個匹配以及其他許多其他事情真的不想重寫從頭開始。

  2. 它應該如何知道地址(「100-199」)==地址(「Main Street」)?你將不得不提出一些知識庫,將每一段文本轉換爲規範地址或地址範圍,然後再比較;請參閱Where is a good Address Parser,但請注意它處理的是單數地址(而不是地址範圍)。

編輯:

感謝斯文;如果你使用一個真正的數據庫,你可以不喜歡

SELECT 
    User.firstname, User.lastname, User.account, Order.placed, Order.fulfilled 
FROM 
    User 
    INNER JOIN Order ON 
     User.streetnumber=Order.streetnumber 
     AND User.streetname=Order.streetname 

如果 streetnumber和streetname是確切匹配;否則你仍然需要考慮上面的第二點。

+1

關於2,OP希望使用兩列作爲連接的關鍵字。另一個「數據庫」也將包含具有完全相同的兩個值的行。 –

+0

好的,謝謝我以前沒有用過SQL,但是我正在閱讀如何將csv導入它,然後我將使用這種查詢。我還決定創建一個「100-199大街」的新欄目,這個欄目應該進一步簡化。 –

相關問題