Как разобрать вставку оператора sql в, чтобы получить значения с помощью pyspark - PullRequest
0 голосов
/ 02 февраля 2020

У меня есть sql дамп с несколькими insert into, как на следующем

query ="INSERT INTO `temptable` VALUES (1773,0,'morne',0),(6004,0,'ATT',0)"

Я пытаюсь получить только значения в кадре данных

(1773,0,'morne',0)
(6004,0,'ATT',0)

I попробовал

spark._jsparkSession.sessionState().sqlParser().parsePlan(query) 

и получить

'InsertIntoTable 'UnresolvedRelation `temptable`, false, false
+- 'UnresolvedInlineTable [col1, col2, col3, col4], [List(1773, 0, 
morne, 0), List(6004,0, 0, ATT, 0)]

Но я не знаю, как получить эти списки значений

есть ли способ получить без улья?

1 Ответ

0 голосов
/ 02 февраля 2020

Если вы пытаетесь получить только список значений из нескольких операторов вставки, вы можете попробовать ниже

listOfInserts = [('''INSERT INTO temptable VALUES (1773,0,'morne',0),(6004,0,'ATT',0)''',),('''INSERT INTO temptable VALUES (1673,0,'morne',0),(5004,0,'ATT',0)''',)]

df = spark.createDataFrame(listOfInserts, ['VALUES'])

from pyspark.sql.functions import substring_index

df.select(substring_index(df.VALUES, 'VALUES', -1).alias('right')).show(truncate = False)
...