用 pyodbc 复制 SQL Table

Copy SQL Table with pyodbc

我正在尝试使用 Databricks 将 SQL table 从一个数据库复制到另一台服务器中的另一个数据库。我听说这样做的一种方法是使用 pyodbc,因为我需要从存储过程中读取数据; JDBC 不支持从存储过程中读取。我想使用类似于下面的代码:

import pyodbc

conn = pyodbc.connect( 'DRIVER={ODBC Driver 17 for SQL Server};'
                       'SERVER=mydatabe.database.azure.net;'
                       'DATABASE=AdventureWorks;UID=jonnyFast;'
                       'PWD=MyPassword')

# Example getting records back from stored procedure (could also be a SELECT statement)
cursor = conn.cursor()
execsp = "EXEC GetConfig 'Dev'"
conn.autocommit = True
cursor.execute(execsp)

# Get all records
rc = cursor.fetchall()

问题是,一旦我使用 pyodbc 将数据放入 rc 变量中,我应该费心将数据移动到 Databricks Dataframe 中,还是应该将数据推送到我的目的地?

您可能不需要将数据转换为Dataframe,只需将数据写入目标即可。但这实际上取决于您尝试推送的数据量——如果它很多,那么创建 Dataframe 可能会有所帮助,因为它将并行化写入(但这可能会使服务器过载)。如果不是那么多数据,就写到目的地。

此外,在这种情况下,您的工作节点并未真正使用,因为所有处理都将在驱动程序节点上进行 - 您可以考虑使用所谓的 Single Node Cluster,但您需要调整大小相应于您的结果集的驱动程序节点。

P.S。您还可以查看此 answer.

中列出的替代方案