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

标签 sql-server python-3.x scala dataframe databricks

我们刚刚从 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()

希望能帮助到你。

关于sql-server - 在 Azure Databricks 中使用 Python 将 DF 写入 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59002048/

相关文章:

python - 清理数字和小数的输入

scala - 如何在 case 类中使用另一个字段初始化一个字段?

scala - 为什么在没有子类型证据的情况下,这个多函数案例的隐式推导会失败?

scala - 替换 Spark DataFrame 中的空值

sql - 检查并更改 SQL 中列的空值或 null 值?

mysql - 如何检查同一变量 SQL 中的多个值

sql - 有没有安全的方法来转换 SQL 日期时间?

python - 如何不退出单击 CLI?

mysql - 管理 runserver - 加载 MySQLdb 模块时出错

sql - 根据特定值从sql表中检索行