Загрузка CSV-файлов в базу данных в Linux - PullRequest
0 голосов
/ 11 июня 2018

Я копировал csv файлы из web каждую минуту и ​​сохранял их в каталоге.

Файлы именуются в зависимости от времени извлечения:

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

Мне нужно загрузить каждый файл в базу данных , созданную на каком-либо удаленном сервере.

Как я могу сделать выше?

1 Ответ

0 голосов
/ 11 июня 2018

Вы можете использовать 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...