繁体   English   中英

在 Azure Databricks 中使用 Python 将 DF 写入 SQL Server

[英]Working with Python in Azure Databricks to Write DF to SQL Server

我们刚刚从 Scala 切换到 Python。 我有一个需要推送到 SQL Server 的数据框。 我之前多次使用下面的 Scala 代码执行此操作。

var bulkCopyMetadata = new BulkCopyMetadata
bulkCopyMetadata.addColumnMetadata(1, "Title", java.sql.Types.NVARCHAR, 128, 0)
bulkCopyMetadata.addColumnMetadata(2, "FirstName", java.sql.Types.NVARCHAR, 50, 0)
bulkCopyMetadata.addColumnMetadata(3, "LastName", java.sql.Types.NVARCHAR, 50, 0)

val bulkCopyConfig = Config(Map(
  "url"               -> "mysqlserver.database.windows.net",
  "databaseName"      -> "MyDatabase",
  "user"              -> "username",
  "password"          -> "*********",
  "dbTable"           -> "dbo.Clients",
  "bulkCopyBatchSize" -> "2500",
  "bulkCopyTableLock" -> "true",
  "bulkCopyTimeout"   -> "600"
))

df.bulkCopyToSqlDB(bulkCopyConfig, bulkCopyMetadata)

这是记录在这里。

https://docs.microsoft.com/en-us/azure/sql-database/sql-database-spark-connector

我正在寻找一个等效的 Python 脚本来完成同样的工作。 我搜索了相同的内容,但没有找到任何内容。 这里有人可以胜任这项工作吗? 谢谢。

请尝试参考 PySpark 官方文档JDBC To Other Databases通过 MS SQL Server 的 jdbc 驱动程序直接将 PySpark 数据帧写入 SQL Server。

这是示例代码。

spark_jdbcDF.write
    .format("jdbc")
    .option("url", "jdbc:sqlserver://yourserver.database.windows.net:1433")
    .option("dbtable", "<your table name>")
    .option("user", "username")
    .option("password", "password")
    .save()

或者

jdbcUrl = "jdbc:mysql://{0}:{1}/{2}".format(jdbcHostname, jdbcPort, jdbcDatabase)
connectionProperties = {
  "user" : jdbcUsername,
  "password" : jdbcPassword,
  "driver" : "com.mysql.jdbc.Driver"
}
spark_jdbcDF.write \
    .jdbc(url=jdbcUrl, table="<your table anem>",
          properties=connectionProperties ).save()

希望能帮助到你。

这是将 Spark 数据帧写入 SQL Server 数据库的完整 PySpark 代码,包括在何处输入数据库名称和架构名称:

df.write \
.format("jdbc")\
.option("url", "jdbc:sqlserver://<servername>:1433;databaseName=<databasename>")\
.option("dbtable", "[<optional_schema_name>].<table_name>")\
.option("user", "<user_name>")\
.option("password", "<password>")\
.save()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM