仅使用保持外键关系的CSV文件进行查询

nnvyjq4y  于 12个月前  发布在  其他
关注(0)|答案(3)|浏览(185)

我有一堆已经导出为CSV文件的表。它们维护了一些主键/外键关系,我想使用它们创建一个新的CSV文件视图。
数据库/csv:

Replys.csv
-PostId
-ReplyId 
-ReplyText

Users.csv
-ReplyId
-UserId
-UserText

字符串
ReplyIdReplys.csv中的主键,Users.csv中的外键。
对于每个User,找到ReplyId Users.csv -> Replys.csv ReplyId
要在SQL中打印每个用户及其ReplyId和ReplyText:

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


我怎么能只使用CSV文件呢?

lfapxunr

lfapxunr1#

您可以执行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')


上面的代码假定CSV中的第一行包含标题行,并且用逗号分隔

vkc1a9a2

vkc1a9a22#

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

vi4fp9gy

vi4fp9gy3#

首先,您将导入不同的到您的数据库中,而不是多个数据库。这似乎是第一个混淆点。您应该能够直接导入csv文件表到您的数据库中。一旦您有了所描述的表关系,您应该能够通过执行INNER JOIN来获取必要的数据:

# User | ReplyId | ReplyText
SELECT UserId, ReplyId, ReplyText FROM users INNER JOIN Replys USING (ReplyId)

字符串

相关问题