查询CSV文件维护外键关系?这可能吗?

时间:2015-04-08 14:54:19

标签: python mysql csv python-3.x pandas

我有一堆表已导出为CSV文件。它们保持一些主键/外键关系,我基本上想用这些(新的CSV文件)创建一个新视图。

数据库/ csv可简化为:

Replys.csv
-PostId
-ReplyId 
-ReplyText

Users.csv
-ReplyId
-UserId
-UserText

其中ReplyIdReplys.csv中的主键和Users.csv中的外键。

为每个User找到ReplyId: Users.csv -> Replys.csv : ReplyId

所以打印每个用户,他们的ReplyId和ReplyText。

User | ReplyId | ReplyText

在SQL中我相信它会是这样的:

SELECT ReplyId, ReplyText
FROM Users, Replys
WHERE Users.ReplyId = Replys.ReplyID

如何仅使用CSV文件执行此操作?有可能吗?

编辑:这个问题很混乱,但我想我已经解释好了。如果您有任何进一步的问题/澄清,请在回复中询问:)。

3 个答案:

答案 0 :(得分:3)

您可以执行inner合并:

假设replys来自replys.csv而users来自users.csv:

replys.merge(users, on='reply_id')

对于多对一关系,您可以执行left合并:

replys.merge(users, on='reply_id', how='left')

如果您来自SQL

,则文档中有一个有用的部分

您可以像这样阅读csv:

replys = pd.read_csv('Replys.csv')
users = pd.read_csv('Users.csv')

以上假设csvs中的第一行包含标题行并以逗号分隔

答案 1 :(得分:2)

Pandas数据框试图为您提供类似SQL的操作。 pd.read_csv两个CSV,然后执行pandas.merge(users, replys, on='reply_id')

之类的操作

http://pandas.pydata.org/pandas-docs/version/0.15.2/merging.html

答案 2 :(得分:0)

首先,您将不同的导入数据库,而不是多个数据库。这似乎是混乱的第一点。您应该能够将csv文件表直接导入数据库。获得所描述的表关系后,您应该能够通过执行INNER JOIN

来获取必要的数据
# User | ReplyId | ReplyText
SELECT UserId, ReplyId, ReplyText FROM users INNER JOIN Replys USING (ReplyId)