sql - 将逗号分隔值拆分为多列
问题描述
我正在尝试使用 SQL 将逗号分隔的列拆分为多个列,以便每个分隔值都位于 Snowflake 上它自己的列下
这是我的桌子的样本
"2015-01-01","00:52:44",161144,"3.1.0","x86_64","mingw32","Formula","1.1-2","US",1
这是我尝试过的:
SELECT * FROM "TUTORIAL"."PUBLIC"."CRAN_LOGS" STRING_SPLIT('date','time','size','r_version','r_arch','r_os','package','version','country','ip_id',';')
这给了我错误消息:
SQL 编译错误:第 1 行的语法错误,位置 59 出乎意料的“日期”。位置 149 处的语法错误第 1 行意外 ')'。
解决方案
您正在寻找split_part
SPLIT_PART(<string>, <delimiter>, <partNumber>)
不过,请注意列名。其中一些可能是 SQL 中的保留关键字,可能会引发错误
with your_table as
(select 'date,time,size,r_version,r_arch,r_os,package,version,country,ip_id' as col)
select split_part(col,',',1) as date,
split_part(col,',',2) as time,
split_part(col,',',3) as size,
split_part(col,',',4) as r_version,
split_part(col,',',5) as r_arch,
split_part(col,',',6) as r_os,
split_part(col,',',7) as package,
split_part(col,',',8) as version,
split_part(col,',',9) as country,
split_part(col,',',10) as ip_id
from your_table;
推荐阅读
- mysql - 有缺口的 DATEDIFF 移动平均线
- java - 将数据从文件导入具有 5 个节点的 Cassandra 集群导致 BusyConnectionException
- windows - 在域名中添加 Windows Spot 实例
- php - 使用授权将 cURL 转换为 PHP cURL:标头中的 Client-ID
- r - R-指代r闪亮中的变量值
- django - Django-Channels 在提供名称或服务未知错误时失败
- laravel - 如何仅在主表记录上使 laravel 5.2 分页工作(计数)不包括连接表
- java - 如何将firebase数据库中的键和值放入hashmap?
- python - 如何使用 pyodbc 从 Teradata 在 Python 中创建多个易失性表
- android - 如何使用 Dagger2 注入改造