Es wurde erstellt, nachdem gedacht wurde, dass es eine Möglichkeit gibt, eine große Datenmenge so einfach wie möglich einzufügen, wenn Sie die Daten in DataFrame mit .read_csv usw. in MSSQL speichern möchten. Bulk Insert wird nicht verwendet, sofern Sie nicht autorisiert sind.
Das Einfügen von 1 Million Zeilen dauert ungefähr 30 Minuten. Bitte lassen Sie mich wissen, ob es einen besseren Weg gibt.
mssql_insert.py
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# python 3.5
import pymssql
import pandas as pd
#Vorbereitung
table_name = '[db].[dbo].[sample_table]'
#Typspezifikation der INSERT-Zieltabelle
columns = ['%s', '%s', '%d', '%d', '%d', '%d']
#Erstellen Sie einen DataFrame
df = pd.DataFrame(...)
#Generierung von INSERT-Anweisungen
args = dict(table=table_name, columns=', '.join(columns))
sql = 'INSERT INTO {table} VALUES ({columns})'.format(**args)
#Konvertieren Sie NaN in Keine
df = df.astype(object).where(pd.notnull(df), None)
params = [tuple(x) for x in df.values]
#SQL-Ausführung
cnn = pymssql.connect(host="server", user="sa", password="password", database="db")
cur = cnn.cursor()
cur.executemany(sql, params)
cnn.commit()
cur.close()
Recommended Posts