我正在尝试使用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脚本并尝试再次选择时,行就消失了。
非常感谢任何建议。
答案 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文件:
创建外部数据源sql:
CREATE EXTERNAL DATA SOURCE j
WITH (
TYPE = BLOB_STORAGE,
LOCATION = 'https://***.blob.core.windows.net/test1'
)
插入结果:
此外,我为您提供了一种可以使用Azure Data Factory的解决方法。它支持设置输入和输出数据源。您可以使用它将数据从Azure存储批量导入Azure SQL数据库而无需任何代码。
希望它对你有所帮助。