在Linux中将csv文件加载到数据库中

时间:2018-06-11 07:24:22

标签: python database

我每分钟都从网页抓取 csv文件并将其存储到目录中。

根据检索时间命名文件:

name = 'train'+str(datetime.datetime.now().strftime("%Y-%m-%d-%H-%M-%S"))+'.csv'

我需要将每个文件上传到某个远程服务器上创建的数据库

我该怎么办?

1 个答案:

答案 0 :(得分:1)

您可以使用pandas和sqlalchemy将CSV加载到数据库中。我使用MSSQL,我的代码如下所示:

import os
import pandas as pd
import sqlalchemy as sa 

server = 'your server'
database = 'your database'

for filename in os.listdir(directory): #iterate over files
    df = pandas.read_csv(filename, sep=',')
    engine = sa.create_engine('mssql+pyodbc://'+server+'/'+database+'? 
    driver=SQL+Server+Native+Client+11.0')

    tableName = os.path.splitext(filename)[0]) #removes .csv extension 

    df.to_sql(tableName, con=engine,dtype=None) #sent data to server

通过设置dtype参数,您可以更改数据类型的转换(例如,如果您想要smallint而不是整数等)

确保你不要写两次相同的文件/表我建议你可以在目录中保存一个日志文件,在那里你可以记录写入数据库的csv文件。然后排除你的for循环中的那些。