💬

Databricksで [PARSE_SYNTAX_ERROR] Syntax error at or near がでた時の解決方法

2023/03/10に公開

Databricksで[PARSE_SYNTAX_ERROR] Syntax error at or near
というエラーが発生したので、その解決方法をご紹介します。

[PARSE_SYNTAX_ERROR] Syntax error at or nearというエラーは、
SQL文などに文法的な誤りがあるときに発生することがあります。
このエラーは、プログラミング初心者にとってはよく見かけるもので、
入力ミスが原因であることがほとんどです。

[PARSE_SYNTAX_ERROR] Syntax error at or nearというエラーが出た場合、
いくつかの可能性があります。

例えば、

1.SQL文に文法的な誤りがある場合。
例えば、セミコロンやクォーテーションマークが不足している場合などです。
SQL文をよく確認してください。

2.テーブル名やカラム名に予約語や特殊文字が含まれている場合。
例えば、userというテーブル名は予約語なので、別の名前に変更するか、
ダブルクォーテーションで囲む必要があります。

3.テーブルのカタログにパーティション情報が見つからない場合。
この場合、パラメーターIF EXISTSを指定するか、
SQLセッション構成をに設定する必要があります。

などです。

具体例

実際に私がDatabricks実行してみたコードはこちら

spark.createDataFrame(df_test).write.mode("overwrite").option("mergeSchema", "true").saveAsTable("6-1")

出てきたエラーメッセージが、

ParseException: 
[PARSE_SYNTAX_ERROR] Syntax error at or near '6'(line 1, pos 0)

== SQL ==
6-1
^^^

エラーメッセージみると、6付近でエラーあるってことをいっています。
近くを見てみると、Table名にハイフン(-)が入っているのがダメみたいでした。

そこで、Table名を"6-1"ではなく、"6_1"で保存することにより、
エラーを回避できました。

結論

このように、[PARSE_SYNTAX_ERROR] Syntax error at or nearというエラーは、
注意深くコードを確認することで防げます。
また、エラーメッセージにはエラーの発生箇所や原因が示されていることが多いので、
それらを参考にして修正することも重要です。

参考文献

https://teratail.com/questions/82059

Discussion