使用JDBC从数据帧源复制到SQL Server目标

2024-05-29 09:36:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Databricks的Python环境中工作。我认为在SQLServer中,应该有几种方法可以将数据帧复制到表中。下面是我正在测试的两个代码示例

# Saving data to a JDBC source
jdbcDF.write \
    .format("jdbc") \
    .option("url", "jdbc:postgresql:dbserver") \
    .option("dbtable", "schema.tablename") \
    .option("user", "username") \
    .option("password", "password") \
    .save()


jdbcDF2.write \
    .jdbc("jdbc:postgresql:dbserver", "schema.tablename",
          properties={"user": "username", "password": "password"})

在这两种情况下,我在第一行得到一个错误,它是这样写的:

'DataFrame' object has no attribute 'write'

我正在阅读这里的文件。 https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html

我有一个数据帧设置的方式,我需要它(源代码)。我在SQLServer中有一个表,其中包含所有匹配的字段名和varchar数据类型(目标)。我只需要从源头复制到目的地。我该怎么做?蒂亚


Tags: 数据dataschemapostgresqlusernamepasswordwriteoption
1条回答
网友
1楼 · 发布于 2024-05-29 09:36:39

根据您的错误信息,我认为示例代码中的jdbcDF对象不应该是^{},可能只是^{}

所以你得到的错误是'DataFrame' object has no attribute 'write'。如果我的判断是正确的,您需要通过下面的代码将pandas数据帧转换为PySpark数据帧来修复它

spark_jdbcDF = spark.createDataFrame(pandas_jdbcDF)

然后将其写入SQL Server

同时,如果您的目标是SQL Server,那么代码中的jdbc信息是针对postgresql,而不是针对SQL Server的

所以您需要先安装mssqlserver的jdbc驱动程序,如下图所示

图1.在Libraries选项卡的Install New对话框的Maven选项卡中单击Search Packages链接。 enter image description here

图2.切换到Maven central以搜索com.microsoft.sqlserverjdbc。 enter image description here

然后,要像下面这样更改mssqlserver的jdbc url,您可以参考官方文档^{}

jdbc:sqlserver://yourserver.database.windows.net:1433;

否则,您也可以通过带有mssqlserver连接的函数^{}将数据帧直接写入sqlserver表

相关问题 更多 >

    热门问题