如果 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/Spark SQL 中的反透视表

Databricks getArgument 值不能在 Spark SQL IN 子句中使用

如何使用 Spark sql 在 Databricks 中使用内部联接更新 Databricks Delta 表

spark sql如何在databricks中创建表

Databricks (Spark SQL) 表的索引

如何在 Spark Databricks 中注册 SQL 函数