Python 中的 ETL 脚本,用于将数据从另一个服务器 .csv 文件加载到 mysql

ETL script in Python to load data from another server .csv file into mysql

我是一名业务分析师,刚加入 Python。 在我的一个项目中,我想从 .csv 文件中提取数据并将该数据加载到我的 MySQL 数据库(暂存)中。 任何人都可以指导我使用示例代码和框架吗?

如果这是格式正确的 CSV 文件,您可以使用 LOAD DATA INFILE MySQL 命令,不需要任何 python。然后在它加载到临时区域(不处理)后,您可以使用选择的 sql/etl 工具继续转换它。

https://dev.mysql.com/doc/refman/8.0/en/load-data.html

问题是您需要添加所有列,但即使您有不需要的数据,您可能更愿意在暂存中加载所有内容。

创建 sqllite 的简单程序。您可以阅读 CSV 文件并使用 dynamic_entry 插入到您想要的目标 table.

import sqlite3
import time
import datetime
import random

conn = sqlite3.connect('test.db')
c = conn.cursor()

def create_table():
    c.execute('create table if not exists stuffToPlot(unix REAL, datestamp TEXT, keyword TEXT, value REAL)')

def data_entry():
    c.execute("INSERT INTO stuffToPlot VALUES(1452549219,'2016-01-11 13:53:39','Python',6)")
    conn.commit()
    c.close()
    conn.close()

def dynamic_data_entry():
    unix = time.time();
    date = str(datetime.datetime.fromtimestamp(unix).strftime('%Y-%m-%d %H:%M:%S'))
    keyword = 'python'
    value = random.randrange(0,10)
    c.execute("INSERT INTO stuffToPlot(unix,datestamp,keyword,value) values(?,?,?,?)",
              (unix,date,keyword,value))
    conn.commit()

def read_from_db():
    c.execute('select * from stuffToPlot')
    #data = c.fetchall()
    #print(data)

    for row in c.fetchall():
        print(row)

read_from_db()

c.close()
conn.close()

您可以遍历 CSV 中的数据并加载到 sqllite3 中。另请参阅下文link。

  • Quick easy way to migrate SQLite3 to MySQL?