2017-09-01 85 views
0

我想批量插入大小不超過50MB的.csv文件在Azure SQL數據庫中,可能不超過10分鐘左右。如何在沒有批量複製程序(BCP)的情況下批量插入Azure SQL數據庫?

但是,對於雲來說,批量插入是not available。正如在另一個thread中指出的那樣,BCP是一個可行的解決方案,但它需要將數據批量插入本地數據庫。但是,在PaaS基礎架構中,這不是一個可選的操作系統級別無法控制且無法創建和管理數據庫的PaaS基礎架構。

目前,使用標準S3:100 DTU,250 GB Azure SQL數據庫,一個131KB的.csv文件需要10分鐘以上的原始數據上傳。如何加速至少一個數量級的上傳?

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

另請考慮Azure數據工廠。 – wBob

回答

3

您可以使用下面的語法BLOB存儲賬戶批量插入:

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

希望這有助於。