我正在尝试使用以下命令在 databrick scala 中删除多个表
select 'DROP TABLE ' + tableName from ABC where tableName LIKE 'in%'
错误结果说
SQL语句错误:AnalysisException: Table or view not found: ABC
但是 ABC 数据库存在
谢谢
不,它不能这样工作......你需要使用 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]}")
我在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("]", "")))