【问题标题】:How to put multi csv files into one sqlite or mysql Database in Python?如何在 Python 中将多个 csv 文件放入一个 sqlite 或 mysql 数据库中?
【发布时间】:2021-10-10 07:41:56
【问题描述】:

对于只有一个 cvs 文件,我可以将其导入 sqlite,如下所示:

conn = sqlite3.connect("data.sqlite") 
df = pd.read_csv('data.csv')
df.to_sql('data', conn, if_exists='append', index=False)
conn.close()

如果我有多个 cvs 文件怎么办?如何将 cvs 文件中的所有表提取到一个 sqlite 或 mysql 数据库中?

【问题讨论】:

  • 您能否详细说明多 CSV 的含义?都是相同结构的CSV吗?所有数据都进入同一张表吗?
  • 他们都有 user_id 作为外键。这些表具有不同的结构。它们不能简单地追加。
  • 如果你用不同的名字重复相同的代码而不是data,它会写入不同的表,这会是什么问题

标签: python sql python-3.x sqlite


【解决方案1】:

假设所有文件都需要写入不同的表。假设表的名称应设置为文件名,不带扩展名。

file_names = [...]
conn = sqlite3.connect("data.sqlite") 
for file_name in file_names:
    table_name = file_name.split('.')[0]
    df = pd.read_csv('data.csv')
    df.to_sql(table_name, conn, if_exists='append', index=False)
conn.close()

这将创建或打开data.sqlite 并且对于file_names 中的每个文件,它将创建一个pandas df 并将其写入新表或附加到同一SQLite DB 中的现有表中

此方法不适用于 MySQL,您需要 SQLAlchemy 连接才能写入 MySQL

更多信息:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_sql.html

【讨论】:

    猜你喜欢
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2011-09-20
    • 1970-01-01
    • 2021-08-05
    • 2019-02-21
    相关资源
    最近更新 更多