mysql 将多个表合并在一起

ctrmrzij  于 2023-01-01  发布在  Mysql
关注(0)|答案(2)|浏览(174)

我似乎有点困惑该怎么做。我有3个csv文件,每个都有姓名年龄和性别的共同行。第一个csv文件显示了3个的共同数据,并继续有属于每个用户的卡详细信息,第二个csv文件包含相同的3个共同的详细信息,并继续包含车辆的详细信息,而第三个csv文件是相同的,然后继续有额外的婚姻状况的详细信息。现在我想上传所有三个在一个单一的表查询mysql与python的一个项目。这将是明智的我上传所有三个表,并使用连接查询来连接所有三个表,还是我找到一个python代码合并所有三个表,并上传到数据库。我是相当新的,所以如果你能解释简单的我,将不胜感激。
如果我要用python代码来合并它们,有什么想法吗?

first_Name,Last_Name,Age,Sex,Vehicle_make,Vehicle_model,Vehicle_year,Vehicle_type
firstName,lastName,age,iban,credit_card_number,credit_card_security_code,credit_card_start_date,credit_card_end_date,address_main,address_city,address_postcode
firstName,lastName,age,sex,retired,dependants,marital_status,salary,pension,company,commute_distance,address_postcode

下面是每一行的样子和合并它们的必要性。我还需要找到一种方法来排序我可以使用主键。我有大约3 - 4行将有相同的细节,所以我不能说我可以使用。
任何想法都很好。

5kgi1eie

5kgi1eie1#

尝试使用Pandas合并您的数据如下:

import pandas as pd

# read each file to Pandas DataFrame
df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')
df3 = pd.read_csv('file3.csv')

# concatenate frames with equal structure
df = pd.concat([df1, df3])

# merge frames by common columns
df_merged = df.merge(df2, how='outer', on=['firstName', 'lastName', 'age'])
df_merged.to_csv('merged.csv', sep=',')

您不仅可以将合并后的帧保存到csv文件中,还可以使用df.to_sql()方法直接保存到数据库中,并且可以根据您的需要对数据进行操作。

lf3rwulv

lf3rwulv2#

尝试使用标准Python工具解决问题

import csv

files= ['file1.csv', 'file2.csv', 'file3.csv']

rows = list()
column_names = list()

"""
Add each row of file to list as list of dictionaries,
e.g. [{'field1': 'value'}, {'field2': 'value'}, ...]
and add column names from header of each file to another sequence
"""
for f in files:
    with open(f, newline='', encoding='utf8') as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
            rows.append(row)
        for item in reader.fieldnames:
            if item not in column_names:
                column_names.append(item)

"""
Write rows to new csv file from previously formed dictionaries
"""
with open('merged.csv', 'w', newline='', encoding='utf8') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=column_names)
    writer.writeheader()
    writer.writerows(rows)

不是很优雅,但应该可以。

相关问题