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

时间:2018-09-01 07:00:30

标签: mysql python-3.x etl

我是一名业务分析师,是Python的新手。 在我的项目之一中,我想从.csv文件中提取数据并将该数据加载到我的MySQL DB(暂存)中。 谁能指导我使用我应该使用的示例代码和框架?

2 个答案:

答案 0 :(得分:0)

如果这是格式正确的CSV文件,则可以使用LOAD DATA INFILE MySQL命令,并且不需要任何python。然后,将其加载到暂存区中(不进行处理)后,您可以继续使用所选的sql / etl工具对其进行转换。

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

一个问题是您需要添加所有列,但是即使您有不需要的数据,您也可能更喜欢在登台中加载所有内容。

答案 1 :(得分:0)

创建sqllite的简单程序。您可以阅读CSV文件,并使用dynamic_entry插入所需的目标表中。

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中。请同时参考以下链接。