如何使用Python从Azure Databricks插入Azure SQL数据库

时间:2019-04-01 09:19:34

标签: python jdbc azure-sql-database azure-databricks

由于无法将pyodbc安装到Azure数据块,因此我尝试使用jdbc通过Python将数据插入Azure SQL数据库,但是我可以找到该示例代码。

jdbcHostname = "xxxxxxx.database.windows.net"
jdbcDatabase = "yyyyyy"
jdbcPort = 1433
#jdbcUrl = "jdbc:sqlserver://{0}:{1};database={2};user={3};password={4}".format(jdbcHostname, jdbcPort, jdbcDatabase, username, password)

jdbcUrl = "jdbc:sqlserver://{0}:{1};database={2}".format(jdbcHostname, jdbcPort, jdbcDatabase)
connectionProperties = {
  "user" : jdbcUsername,
  "password" : jdbcPassword,
  "driver" : "com.microsoft.sqlserver.jdbc.SQLServerDriver"
}

pushdown_query = "(INSERT INTO test (a, b) VALUES ('val_a', 'val_b')) insert_test" 

请告知如何用Python编写插入代码。 谢谢。

3 个答案:

答案 0 :(得分:1)

  

由于无法将pyodbc安装到Azure数据块

实际上,看来您可以在数据块中安装pyodbc。

%sh    
apt-get -y install unixodbc-dev
/databricks/python/bin/pip install pyodbc

有关更多详细信息,您可以参考此answer和此blog

答案 1 :(得分:0)

如果可以的话,您还应该可以使用Spark数据框插入Azure SQL。只需使用从Azure SQL获得的连接字符串即可。

connectionString = "<Azure SQL Connection string>"

data = spark.createDataFrame([(val_a, val_b)], ["a", "b"])

data.write.jdbc(connectionString, "<TableName>", mode="append")

答案 2 :(得分:0)

Jon的支持...这就是我用来将数据从Azure数据块数据帧写入Azure SQL数据库的方法:

gene.DB<-cbind(S1,S2,S3,S4.....S1200)