以 TO、FROM 作为列名的雪花表
Snowflake tables with TO, FROM as column names
看起来我们已经通过 ELT 加载了一些雪花表,其中“TO,FROM”作为列名,它们都是任何 sql 工具中的经典函数
每当我 运行 专门针对这些列进行查询时,总是会出现错误 - 除了更改列名之外,我该如何修复它?不想更改列名,因为 ELT 过程总是从 mongoDB 通过基于日志的复制(缝合数据)
发生
select * - 工作完美,所有其他列也工作。只是 "to" 和 "from" 是问题 - 永远不要在列中使用它吗?
select to, from from table limit 10 ; // tested [to, "to", 'to'] - none work
Error: SQL compilation error: error line 1 at position 7 invalid identifier '"to"'
除了源列更改或雪花列更改之外,还有其他解决方法吗?
Snowflake 使用标准双引号来转义标识符。然而,当标识符被转义时,字母的大小写很重要,所以,这些是不一样的:
select "to"
select "To"
select "TO"
您需要为您的列名选择正确的名称。
此外,空格也很重要,所以它们不一样:
select "to "
select " to"
select "to"
也就是说,看起来像 to
的可能是其他东西。您需要知道那是什么才能正确转义名称。
如果您无法理解它们,可以创建一个视图来为 table 提供合理的名称。像这样:
create view v_t (to_date, from_date, . . .) as
select *
from t;
您需要确保在列名称列表中包含 table 中的所有列名称,其顺序与它们在 table 中的顺序相同。然后就可以使用名称合理的视图了。
看起来我们已经通过 ELT 加载了一些雪花表,其中“TO,FROM”作为列名,它们都是任何 sql 工具中的经典函数
每当我 运行 专门针对这些列进行查询时,总是会出现错误 - 除了更改列名之外,我该如何修复它?不想更改列名,因为 ELT 过程总是从 mongoDB 通过基于日志的复制(缝合数据)
发生select * - 工作完美,所有其他列也工作。只是 "to" 和 "from" 是问题 - 永远不要在列中使用它吗?
select to, from from table limit 10 ; // tested [to, "to", 'to'] - none work
Error: SQL compilation error: error line 1 at position 7 invalid identifier '"to"'
除了源列更改或雪花列更改之外,还有其他解决方法吗?
Snowflake 使用标准双引号来转义标识符。然而,当标识符被转义时,字母的大小写很重要,所以,这些是不一样的:
select "to"
select "To"
select "TO"
您需要为您的列名选择正确的名称。
此外,空格也很重要,所以它们不一样:
select "to "
select " to"
select "to"
也就是说,看起来像 to
的可能是其他东西。您需要知道那是什么才能正确转义名称。
如果您无法理解它们,可以创建一个视图来为 table 提供合理的名称。像这样:
create view v_t (to_date, from_date, . . .) as
select *
from t;
您需要确保在列名称列表中包含 table 中的所有列名称,其顺序与它们在 table 中的顺序相同。然后就可以使用名称合理的视图了。