使用 Databricks 删除数据库中的多个表

问题描述 投票:0回答:2

我正在尝试使用以下命令在 databrick scala 中删除多个表

select 'DROP TABLE ' + tableName from ABC where tableName LIKE 'in%'

错误结果说

SQL语句错误:AnalysisException: Table or view not found: ABC

但是 ABC 数据库存在

谢谢

scala databricks databricks-sql
2个回答
4
投票

不,它不能这样工作......你需要使用 SHOW TABLES IN ... LIKE ... 结合显式删除。像这样(在 Python 中):

db_name = "ABC"
pattern = "in*"
tables = spark.sql(f"SHOW TABLES IN {db_name} LIKE '{pattern}'")
for row in tables.collect():
  spark.sql(f"DROP TABLE {db_name}.{row[1]}")

0
投票

我在scala中找到了以下方式

val dbName="ABC"
val df = spark.sql(s"""show tables from """+ dbName)
df.createOrReplaceTempView("temp_tables")
val temp_tables = spark.sql("""select tableName from temp_tables where tableName like 'in%' """)

temp_tables.collect().foreach(row => println("DROP TABLE " + dbName + "."+ row.toString().replace("[", "").replace("]", "")))

© www.soinside.com 2019 - 2024. All rights reserved.