【问题标题】:Getting syntax error when restoring sql server database via pyspark通过 pyspark 恢复 sql server 数据库时出现语法错误
【发布时间】:2022-01-05 15:57:53
【问题描述】:

我正在尝试在 aws 胶水作业中执行数据库还原,运行以下查询时出现语法错误:

RESTORE DATABASE dbname FROM DISK = '/tmp/database.bak'

调用 o79.load 时出错。关键字“RESTORE”附近的语法不正确。

我也尝试在 exec 中运行恢复脚本,但在尝试执行该操作时,在关键字“EXEC”附近出现语法错误。

是不是因为我只能通过spark查询表,不能做数据库恢复之类的事情?

我的spark代码如下:

df = sql_context.read.jdbc(
    url=url,
    table="RESTORE DATABASE db_name FROM DISK = '/tmp/local_file_name.bak'",
    properties=jdbc_source['properties'],
)

【问题讨论】:

  • spark.read.jdbc 用于从 sql 数据库中读取数据,那么您为什么要尝试从 Spark 恢复您的 sql server db?在你的 sql server 环境中恢复它,然后使用 spark 读取一些表。
  • 我将获得大量备份,并考虑在它们进入 S3 后自动将它们读入 RDS。从这里我将把数据加载到 Redshift 中。我不想一次手动恢复每一个。
  • 那你可以找一些脚本解决方案,但绝对不是spark的任务。
  • sql_context.read.
  • 你说这是一个 AWS RDS 实例吗?您是否尝试过使用 msdb.dbo.rds_restore_database 代替?参考:Restoring a database

标签: sql-server apache-spark pyspark aws-glue


【解决方案1】:

我最终不会使用 Spark,而是使用 python pyodbc 库,因为这样我可以执行所有 SQL 命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 2020-08-24
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    相关资源
    最近更新 更多