下面是我的示例数据块代码,其中 ACTUAL_TABLE 和 TEST_TABLE 是 SQL 表。
我正在尝试使用 pyodc 连接从数据块中的 TEST_TABLE 插入 ACTUAL_TABLE。
mssql_db.sql
是我的连接,连接按预期工作。代码执行没有任何错误,但没有向表中插入任何数据。看起来 sp_executesql
不能在数据块上工作。
V_SQL='INSERT INTO dbo.ACTUAL_TABLE(NAME,GENDER) SELECT ZNAME,GENDER from dbo.TEST_TABLE'
mssql_db.sql(f"""begin declare @V_SQL NVARCHAR(MAX);
begin
set @V_SQL=N'{V_SQL}'
EXECUTE sp_executesql @V_SQL;
end
end""")
有没有其他方法可以满足这个要求。我只想从数据块中插入它。
我还尝试在 SQL 中创建过程并从数据块调用该过程,即使这不起作用。
按照以下方法,我根据您的要求在我的环境中重现相同的东西。
这是我的演示表
ACTUAL_TABLE1
.
现在,您可以查看连接到SQL服务器的Azure Databricks
代码:
import pyodbc
server = 'dem123.database.windows.net'
database = 'pool123'
username = 'xxxx'
password = 'xxxx'
conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=' + server + ';DATABASE='+ database +';UID=' + username + ';PWD='+ password)
cursor = conn.cursor()
sql = 'INSERT INTO dbo.ACTUAL_TABLE1 (NAME, GENDER) SELECT ZNAME, GENDER FROM dbo.TEST_TABLE'
cursor.execute(sql)
conn.commit()
conn.close()
使用上面的代码成功执行并将数据插入到 ACTUAL_TABLE1 中:
输出: