如果 Databricks 或 Spark SQL 中存在表,则插入
Posted
技术标签:
【中文标题】如果 Databricks 或 Spark SQL 中存在表,则插入【英文标题】:Insert If Table Exists in Databricks or Spark SQL 【发布时间】:2019-11-22 22:27:09 【问题描述】:我在 Databricks 笔记本上写东西,我需要说以下内容:
%sql
IF EXISTS myTable INSERT OVERWRITE TABLE myTable SELECT * FROM somethingElse
我知道INSERT OVERWRITE
子句有效,但我不确定如何让IF EXISTS
在不中断纯SQL 代码和使用python 的情况下工作(这会使脚本更加混乱)。
【问题讨论】:
【参考方案1】:很遗憾,Databricks 不支持名为“IF EXISTS”的 DDL。
你必须使用名为“Drop Table”的命令:
删除一个表并从文件系统中删除与该表关联的目录,如果这不是一个 EXTERNAL 表。如果要删除的表不存在,则抛出异常。
如果存在
如果表不存在,什么都不会发生。
DROP TABLE [IF EXISTS] [db_name.]table_name
示例:
DROP TABLE IF EXISTS diamonds;
CREATE TABLE diamonds USING CSV OPTIONS (path "/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header "true")
参考:SQL Language Manual 这是 Databricks 中支持的数据定义语言 (DDL) 和数据操作语言 (DML) 构造的完整列表。
希望这会有所帮助。
【讨论】:
以上是关于如果 Databricks 或 Spark SQL 中存在表,则插入的主要内容,如果未能解决你的问题,请参考以下文章
Databricks getArgument 值不能在 Spark SQL IN 子句中使用