【发布时间】:2014-07-12 23:48:13
【问题描述】:
我正在尝试基于公共列合并两个文本文件中的选择列。我这样做是为了将其导入 MySQL。显然,在 SQL 中,这将是一个获取信息的简单查询,但我实际上想要一个具有指定连接的单独且永久的表,因此我需要为导入创建此文本文件。
这是我目前正在使用的代码:
import csv
with open('locations.txt', 'rb') as l,\
open('checkins.txt','rb') as c,\
open('location.txt','w') as location:
writer = csv.writer(location, delimiter='\t')
for line in c:
words = line.split()
for lines in l:
word = lines.split()
writer.writerow([word[:], words[3], words[4], words[6:16]])
这是示例输出:
['220811', 'Flemington', '2010-10-23'] 59.31297463 '\t' 18.02006155 '\t' ['59.2968', '18.0313', '1.91024672383817', '12420', 'Bandhagen', 'SE']
(顺便说一句,我的输出中不断出现撇号和括号。有没有办法摆脱它们?在我导入 csv 并使用括号使用 writerow 方法之前我没有遇到问题,所以我猜这就是问题所在。)
我想要的输出是从 locations.txt 的第 1 列和从 checkins.txt 的第 5 列加入的数据。我是否应该找到一种方法来根据我想要加入的列对两个文本文件中的信息进行排序?
此外,locations.txt 的第 1 列中的信息不应与第 5 列不同,但 checkins.txt 文件的第 5 列中会有重复信息。有没有合适的方法来处理这个? (我想在locations.txt中保留与第1列值关联的重复项)
【问题讨论】:
-
为什么不在 SQL 中通过选择连接到新表来执行此操作?
-
这可能是一个非常愚蠢的问题,但我能做到吗?加入后我可以在数据库中创建一个永久表吗?
-
对于 MySQL,您需要
INSERT INTO [tablename] SELECT ....。 MySQL 文档在这里:dev.mysql.com/doc/refman/5.6/en/insert-select.html -
这对你有用吗?
-
我仍在尝试将我的一个文件加载到数据库中。它是 79.6MB,当超过等待锁时,我一直被启动。一旦我解决了这个问题,我会告诉你的。我查了一下,看来我可以像你建议的那样轻松加入他们。