Передача переменной в Postgresql из Spark с scala - PullRequest
0 голосов
/ 18 января 2020

Обычно я могу получить доступ к таблице Hive из Spark, используя следующее:

val start = "20191009"
val end   = "20200112"
val df= ss.sql(s"""select * from myTable where dat between '$start' and '$end' """)

По предыдущему коду я могу передать переменную в SQL, включив $ перед переменной.

Теперь я хочу сделать те же самые предыдущие логи c, но с таблицей postgres. У меня есть таблица Postgres, к которой я подключился:

val statement = connection.createStatement()

var gg = statement.executeQuery("update myTable set firstV='NewValue' where SecondV =$val;")

Я хочу передать переменную предыдущему sql (переменная val).

Ответы [ 2 ]

2 голосов
/ 18 января 2020

Ваш второй фрагмент кода не использует модификатор s, поэтому подстановка $ не будет работать. Попробуйте

var gg = statement.executeQuery(s"update myTable set firstV='NewValue' where SecondV =$val;")```
0 голосов
/ 20 января 2020

Как @Charlie Flowers ударил часть проблемы; Я пропустил модификатор s перед запросом. Другая проблема заключалась в попытке сохранить результат таблицы Postgres в переменной (в моем случае gg), запрос будет напрямую выполнен к базе данных / таблице Postgres, поэтому я просто удалил часть var gg = .

statement.executeQuery(s"update myTable set firstV='NewValue' where SecondV =$val;")

Кроме того, этот очень помог мне, так как я использовал executeQuery, тогда как я должен использовать executeUpdate, поэтому мой запрос должен быть:

statement.executeUpdate(s"update myTable set firstV='NewValue' where SecondV =$val;")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...