基于Python中的公共列合并两个文本文件

基于Python中的公共列合并两个文本文件,python,mysql,sql,csv,Python,Mysql,Sql,Csv,我试图基于一个公共列合并两个文本文件中的select列。我这样做是为了将它导入MySQL。显然,在SQL中,这将是一个获取信息的简单查询,但实际上我需要一个具有指定联接的单独且永久的表,因此我需要为导入创建此文本文件 这是我当前使用的代码: import csv with open('locations.txt', 'rb') as l,\ open('checkins.txt','rb') as c,\ open('location.txt','w') as locati

我试图基于一个公共列合并两个文本文件中的select列。我这样做是为了将它导入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.0206155'\t'['59.2968','18.0313','1.910246723817','12420','Bandhagen','SE']

(顺便说一句,我的输出中不断出现撇号和方括号。有没有办法消除它们?直到我导入csv并使用writerow方法使用方括号,我才发现问题所在。)

我想要的输出是locations.txt中第1列和checkins.txt中第5列的数据。我是否应该找到一种方法,根据要加入的列对两个文本文件中的信息进行排序


此外,locations.txt的第1列中的信息与第5列中的信息应该没有任何不同,但checkins.txt文件的第5列中会有重复的信息。有没有合适的方法来处理这个问题?(我想在locations.txt中保留与第1列值关联的副本)

在打印之前尝试加入数组:

writer.writerow("\t".join(word[:] + words[3] + words[4] + words[6:16]))

此外,您正在覆盖l中的变量字。所以,你没有得到你想要的。第二个文件的输出可能需要类似于words2=lines.split()的内容

如注释中所述,这可以通过简单地将连接选择到新表中来实现

在MySQL中,它使用类似的方法:

INSERT INTO New_Table
  SELECT t1.field1, t1.field2, t2.field1
  FROM table1 t1
  INNER JOIN table2 t2 ON t1.PK = t2.table1_FK

因此,出于性能原因,您应该尝试在数据库中保留这样的操作,并使您的步骤更容易重复,而不必将查询转储到CSV,然后单独加入查询(虽然您可以先编写联接查询,然后将其输出到CSV,从而跳过此步骤,但这仍然是错误的方法)然后将其插入到数据库中。

为什么不在SQL中通过选择加入到新表中来执行此操作?这可能是一个非常愚蠢的问题,但我可以做到这一点?加入它们后,我可以在数据库中创建一个永久表?您需要
插入[tablename]为MySQL选择…
。MySQL文档在这里:这对你有用吗?我仍在尝试将我的一个文件加载到DB中。它是79.6MB,当超过等待锁时,我会不断启动。一旦我解决了这个问题,我会让你知道。我查找了它,似乎可以像你建议的那样轻松地加入它们。我很高兴我不确定我是否键入了错误,但在我尝试时无法生成。抱歉,您需要将列表中的单个元素包围起来:…“\t”。join(word[:]+words[3:5]+words[6:16])我通过将3和4与words[3:5]合并在一起将其缩短了一点。我最初编写它的方式是尝试将字符串附加到python中不允许的列表中。我还注意到,您对列表的命名不同(word和word)…因此,我对word的评论有点不正确。不过,在创建具有类似但不同内容的新变量时,最好更加清楚