Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

insertion en bloc pyodbc de base

Voici une fonction qui peut effectuer l'insertion en masse dans la base de données SQL Server.

import pyodbc
import contextlib

def bulk_insert(table_name, file_path):
    string = "BULK INSERT {} FROM '{}' (WITH FORMAT = 'CSV');"
    with contextlib.closing(pyodbc.connect("MYCONN")) as conn:
        with contextlib.closing(conn.cursor()) as cursor:
            cursor.execute(string.format(table_name, file_path))
        conn.commit()

Cela fonctionne définitivement.

MISE À JOUR :J'ai remarqué dans les commentaires, ainsi que dans le codage régulier, que pyodbc est mieux pris en charge que pypyodbc.

NOUVELLE MISE À JOUR :supprimez conn.close() puisque l'instruction with gère cela automatiquement.