Il a été créé après avoir pensé qu'il y aurait un moyen d'insérer une grande quantité de données aussi facilement que possible lorsque vous souhaitez stocker les données dans DataFrame avec .read_csv etc. dans MSSQL. l'insertion en masse n'est pas utilisée en supposant que vous n'êtes pas autorisé.
Il faut environ 30 minutes pour INSÉRER 1 million de lignes. S'il vous plaît laissez-moi savoir s'il existe une meilleure façon.
mssql_insert.py
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# python 3.5
import pymssql
import pandas as pd
#Préparation
table_name = '[db].[dbo].[sample_table]'
#Spécification de type de la table de destination INSERT
columns = ['%s', '%s', '%d', '%d', '%d', '%d']
#Créer un DataFrame
df = pd.DataFrame(...)
#Génération d'instructions INSERT
args = dict(table=table_name, columns=', '.join(columns))
sql = 'INSERT INTO {table} VALUES ({columns})'.format(**args)
#Convertir NaN en Aucun
df = df.astype(object).where(pd.notnull(df), None)
params = [tuple(x) for x in df.values]
#Exécution SQL
cnn = pymssql.connect(host="server", user="sa", password="password", database="db")
cur = cnn.cursor()
cur.executemany(sql, params)
cnn.commit()
cur.close()
Recommended Posts