在这里,我试图将一个表与两个包含数百万条记录的表进行比较,因此我希望分别比较dem,并在主表“tabl”名称状态中创建一个单独的列,以便可以更新该表本身
步骤:在email name“status”旁边的主表中创建一个新列
第二步:该列必须在与tab1、tab2表比较时更新
list_of_tables=['tab1','tab2']
for tab in list_of_tables:
cursor.execute("select main.*,if({}.email is not null ,'MATCH','NONMATCH') stataus from main left join {} on main.email={}.email".format(tab,tab,tab))
data_2 = cursor.fetchall()
print data_2
data3=list(data_2)
data_3=pd.DataFrame(data3)
upload(ftp,data_3,FILEPATH)
def upload(ftp,data_3,FILEPATH):
data_4=data_3.to_csv(Out_file,index=False,header=None)
main:
email
abc@gamil.com
xyz@email.com
ijk@gmail.com
ghi@gmail.com
pqr@gmail.com
yup@gmail.com
tab1:
email
ijk@gmail.com
yup@gmail.com
tab2:
email
xyz@email.com
pqr@gmail.com
要求的结果
email valid
abc@gamil.com non-match
xyz@email.com match
ijk@gmail.com match
ghi@gmail.com non-match
pqr@gmail.com match
yup@gmail.com match
but getting like dis:
abc@gamil.com non-match
xyz@email.com non-match
ijk@gmail.com match
ghi@gmail.com non-match
pqr@gmail.com non-match
yup@gmail.com match
abc@gamil.com nonmatch
xyz@email.com match
ijk@gmail.com nonmatch
ghi@gmail.com nonmatch
pqr@gmail.com nonmatch
yup@gmail.com nonmatch
2条答案
按热度按时间6vl6ewon1#
终于明白了:
jvlzgdj92#
查询是好的,但我希望for循环运行是一个错误的地方,因为我得到的是最后一个tab2比较结果,而不是tab1和tab2都比较结果。
scott boston更新:
您仍然可以运行: