sql - Amazon Redshift 错误 - 错误:0A000:Redshift 表不支持指定的类型或函数(每条 INFO 消息一个)
问题描述
运行以下查询时:
WITH sublevels AS (
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1), FIELDA AS (SELECT (ROW_NUMBER() OVER ())::INT sublevel
FROM sublevels sl1, sublevels sl2, sublevels sl3)
SELECT TOP 10
FIELDB,
sublevel, REPLACE(REGEXP_REPLACE(REGEXP_SUBSTR(UPPER(FIELDC), 'FROM \\S+', 1, sublevel), 'FROM ', ''),')','') ALIASA
FROM TABLEA
JOIN FIELDA ON sublevel <= REGEXP_COUNT(UPPER(FIELDC), 'FROM ')
WHERE ALIASA != 'ABC'
AND lower(split_part(ALIASA, '.', 2)) IN (
SELECT DISTINCT lower(t.table_name)
FROM information_schema.tables t
INNER JOIN information_schema.columns c on c.table_name = t.table_name AND c.table_schema = t.table_schema
WHERE lower(column_name) similar TO '%(aaa|bbb|ccc)%')
我收到以下错误:
错误:0A000:Redshift 表不支持指定的类型或函数(每个 INFO 消息一个)。
我不知道为什么,如果我单独运行查询,它们可以正常工作:
查询1
WITH sublevels AS (
SELECT 1 UNION ALL
SELECT 1 UNION ALL
SELECT 1), FIELDA AS (SELECT (ROW_NUMBER() OVER ())::INT sublevel
FROM sublevels sl1, sublevels sl2, sublevels sl3)
SELECT TOP 10
FIELDB,
sublevel, REPLACE(REGEXP_REPLACE(REGEXP_SUBSTR(UPPER(FIELDC), 'FROM \\S+', 1, sublevel), 'FROM ', ''),')','') ALIASA
FROM TABLEA
JOIN FIELDA ON sublevel <= REGEXP_COUNT(UPPER(FIELDC), 'FROM ')
WHERE ALIASA != 'ABC'
查询2
SELECT DISTINCT lower(t.table_name)
FROM information_schema.tables t
INNER JOIN information_schema.columns c on c.table_name = t.table_name AND c.table_schema = t.table_schema
WHERE lower(column_name) similar TO '%(aaa|bbb|ccc)%'
解决方案
在红移中:
- 针对 information_schema 的查询仅在领导节点上运行
- 针对任何“正常”表的查询仅在计算节点上运行
您不能混合搭配 1. 和 2。
推荐阅读
- javascript - 通过与 https://localhost:3000 的混合内容的安全连接阻止了对地理位置的访问
- php - php中的二进制,为什么是63位?
- c# - CQRS - 在 C#、ASP.net Core 中使用 Mediatr 创建 BaseCommandHandler
- .net - Amazon Transcribe 流媒体服务
- xamarin.forms - Xamarin 表单:在 IOS 中安装键盘重叠插件后存在键盘重叠问题
- ruby-on-rails - rails表单中的条件html - 更好的方法?
- c# - 如何在前一个被破坏的相同位置实例化一个游戏对象
- macos-mail-app - Google 脚本中的文本格式 Mailapp
- php - 提交后禁用选项
- python - virtualenv 和使用带有 --ignore-installed 和 --user 选项的 pip install 有什么区别?