使用SQLAlchemy批量插入Azure SQL不会持久化

时间:2018-04-27 17:06:26

标签: python sql-server azure sqlalchemy azure-sql-database

我正在尝试使用Python中的SQLAlchemy在我的Azure SQL数据库中执行批量插入(来自blob存储)。外部数据源工作正常,我可以从SQL Server Management Studio运行查询。当我尝试从python查询时:

query = '''

    BULK INSERT mytable FROM '%s.csv' WITH (DATA_SOURCE = 'blobStorage',
    FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', FIRSTROW=2) 
''' % report_date

insert = connection.execute(query)

查询运行没有错误。然后:

sel = connection.execute("SELECT count(*) FROM mytable where DATE='%s'" % report_date)

返回新行数。

(36026,)

我可以选择新行,看看数据看起来都是正确的。

但是,回到SQL Server Management Studio,尝试选择新行不会返回任何内容。新行不在表中,当我重新启动Python脚本并尝试再次选择时,行就消失了。

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

我使用以下python代码将csv文件中的数据成功导入sql数据库。

import pyodbc
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=***.database.windows.net;DATABASE=***;UID=***;PWD=***')

cursor = cnxn.cursor()

sql = """
BULK INSERT jaygong.dbo.Student
FROM 'insert.csv' 
WITH (
    DATA_SOURCE = 'j',
    FIELDTERMINATOR=',',
    ROWTERMINATOR='\n'
);
"""

cursor.execute(sql)
cnxn.commit()
cursor.close()
cnxn.close()

csv文件:

enter image description here

创建外部数据源sql:

CREATE EXTERNAL DATA SOURCE j  
    WITH (   
        TYPE = BLOB_STORAGE,  
        LOCATION = 'https://***.blob.core.windows.net/test1'
    )  

插入结果:

enter image description here

此外,我为您提供了一种可以使用Azure Data Factory的解决方法。它支持设置输入和输出数据源。您可以使用它将数据从Azure存储批量导入Azure SQL数据库而无需任何代码。

希望它对你有所帮助。