2017-09-01 4 views
0

Je souhaite insérer en bloc des fichiers .csv de taille inférieure ou égale à 50 Mo dans une base de données Azure SQL dans un délai maximum de 10 minutes environ.Comment insérer en bloc dans la base de données SQL Azure sans programme de copie en bloc (BCP)?

Cependant, l'encart en vrac est not available pour le cloud. Comme indiqué dans un autre thread, BCP est une solution viable, mais elle nécessite d'insérer en bloc les données dans une base de données locale. Cependant, ce n'est pas une option dans une infrastructure PaaS où il n'y a pas de contrôle au niveau du système opérationnel et il n'est pas possible de créer et de gérer une base de données.

À l'heure actuelle, un .csv de 131 Ko nécessite plus de 10 minutes pour être téléchargé brut par raw en utilisant une norme S3: 100 DTU, 250 Go Azure SQL Database. Comment accélérer le téléchargement d'au moins un ordre de grandeur?

import pandas as pd 
import sqlalchemy 
table = pd.Dataframe(<your_data_here>) 
sql_driver = <driver> 
sql_server = <server> 
sql_user = <user> 
sql_pass = <password> 
sql_db = <database_name> 
sql_conn = sqlalchemy.create_engine(
    'mssql+pyodbc://'+sql_user+':'+sql_pass+'@'+sql_server+'/'+sql_db+'?driver='+sql_driver) 
table.to_sql('table_name', con=sql_conn) 
+0

Considérons également Azure Data Factory. – wBob

Répondre

3

Vous pouvez insérer en vrac à partir du compte de stockage BLOB en utilisant la syntaxe ci-dessous:

BULK INSERT Test 
FROM 'source/data/Test.csv' 
WITH (DATA_SOURCE = 'MyAzureBlobStorage', 
       FORMAT='CSV', CODEPAGE = 65001, 
       FIRSTROW=2, 
       TABLOCK); 

Hope this helps.