Saya menjawab salah satu pertanyaan saya sebelumnya, namun, setelah memperbaiki masalah, saya dihadapkan dengan masalah lain tentang SQLServerException.

Saya mencoba membaca data di Azure SQLDB. Saya telah berhasil mengautentikasi ke server namun ketika saya mencoba menerapkan fungsi untuk membaca data saya mendapatkan kesalahan berikut:

com.microsoft.sqlserver.jdbc.SQLServerException: Sintaks salah di dekat '5'

Berikut ini adalah rincian lebih lanjut tentang kesalahan:

Py4JJavaError                             Traceback (most recent call last)
<command-3741352302548628> in readFromDb(processId, query)
      3   try:
----> 4     jdbcDF = (spark.read
      5       .format("jdbc")

/databricks/spark/python/pyspark/sql/readwriter.py in load(self, path, format, schema, **options)
    209         else:
--> 210             return self._df(self._jreader.load())
    211 

/databricks/spark/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py in __call__(self, *args)
   1303         answer = self.gateway_client.send_command(command)
-> 1304         return_value = get_return_value(
   1305             answer, self.gateway_client, self.target_id, self.name

Kodenya adalah sebagai berikut:

def readFromDb(processId, query):
  try:
    jdbcDF = (spark.read
      .format("jdbc")
      .option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver")
      .option("url", f"jdbc:sqlserver://{DBServer}.database.windows.net;database={DBDatabase}")
      .option("user", DBUser)
      .option("query", query)
      .option("password", DBPword)
      .load()    
     )
    return jdbcDF
  except Exception as e:
    writeToLogs(processId,LogType.Error, EventType.FailReadFromDb, LogMessage.FailReadFromDb, errorType = ErrorType.FailReadFromDb)
    raise Error(f"{LogMessage.FailReadFromDb.value} ERROR: {e}")
  except:
    writeToLogs(processId,LogType.FailReadFromDb, EventType.FailReadFromDb, LogMessage.FailReadFromDb, errorType = ErrorType.FailReadFromDb)
    raise Error(f"{LogMessage.FailReadFromDb.value}")

Dapatkah seseorang memberi tahu saya apa arti kode secara umum dan pendekatan terbaik untuk memperbaikinya?

0
Patterson 7 Mei 2021, 19:01

1 menjawab

Jawaban Terbaik

Seperti yang dikatakan @mac dan Alex Ott, kesalahan ini sebagian besar disebabkan oleh pernyataan kueri.

Dan kami senang mendengar kesalahan teratasi dengan memodifikasi kueri.

1
Leon Yue 12 Mei 2021, 07:54