我正在尝试将数据库名称和架构详细信息从 ADF 管道传递到 azure databricks 笔记本以使用我的创建和删除表,但如果我第一次尝试运行所有数据块脚本。由于小部件变量为空,我收到语法错误。请找到下面的代码并给我建议。
dbutils.widgets.removeAll()
dbutils.widgets.text("dbname","db")
dbname= dbutils.widgets.get("dbname")
dbutils.widgets.text("dbschema","dbschema")
dbschema= dbutils.widgets.get("dbschema")
drop table IF EXISTS $dbname.$dbschema.tablename;
[PARSE_SYNTAX_ERROR] Syntax error at or near '.'.(line 2, pos 21)
您遇到的语法错误是由 SQL 语句中不正确的字符串连接引起的。
我尝试过以下方法:
dbutils.widgets.removeAll()
dbutils.widgets.text("dbname","db")
dbname= dbutils.widgets.get("dbname")
dbutils.widgets.text("dbschema","dbschema")
dbschema= dbutils.widgets.get("dbschema")
sql_command = "DROP TABLE IF EXISTS " + dbname + "." + dbschema + ".tablename"
sql_command
结果:
'DROP TABLE IF EXISTS db.dbschema.tablename'
在上面的代码中,将 dbname 和 dbschema 变量的值与 SQL 语句连接起来。 然后,您可以在 Databricks SQL 语句中使用 sql_command 变量来删除该表。