在Databricks中能否仅用SQL加载数据?求Python写入的SQL等价实现
Databricks SQL 对应Python写入目录的等价写法
针对你用Python的df.write.format('delta').save('/dir/to/output/')写入目录的操作,Databricks SQL有以下几种等价实现方式:
直接写入指定路径(不注册到Metastore)
方式1:CREATE TABLE AS SELECT (CTAS) 直接指定路径
CREATE TABLE delta.`/dir/to/output/` AS SELECT * FROM your_source_data;
这里delta./dir/to/output/``明确指定使用Delta格式并写入目标路径,查询结果会直接生成Delta文件存储到该路径下。
方式2:INSERT OVERWRITE DIRECTORY 指定格式
INSERT OVERWRITE DIRECTORY '/dir/to/output/' USING delta SELECT * FROM your_source_data;
此方式会覆盖目标路径下的现有数据,适合需要全量覆盖写入的场景。
方式3:COPY INTO(幂等写入,适合增量/重复执行)
COPY INTO delta.`/dir/to/output/` FROM (SELECT * FROM your_source_data) FILEFORMAT = delta;
COPY INTO支持重复执行而不会重复写入相同数据,适合定时同步或增量更新的场景。
写入Metastore注册的表
如果需要将数据写入到Databricks Metastore的表中,可使用以下写法:
-- 创建新Delta表并写入数据 CREATE TABLE your_table_name USING delta AS SELECT * FROM your_source_data; -- 追加数据到现有表 INSERT INTO your_table_name SELECT * FROM your_source_data; -- 覆盖现有表数据 INSERT OVERWRITE TABLE your_table_name SELECT * FROM your_source_data;
注意事项
- 路径需用反引号(`)包裹,避免路径中的特殊字符引发语法错误
USING delta或delta.路径``对应Python中的format('delta'),明确指定存储格式- 如果仅需临时存储数据或无需在Metastore中注册,直接使用路径形式的写法即可
内容的提问来源于stack exchange,提问作者simplycoding
相关产品推荐
相关产品推荐

