如何更改Amazon Redshift数据库中的列数据类型?
我无法在Redshift中更改列数据类型; 有没有办法修改Amazon Redshift中的数据类型?
我是aws的新手,谁能告诉我什么是redshifts与mysql命令的等价物?
show tables -- redshift command
describe table_name -- redshift command
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个只计算符合条件的行的查询.
例如,在MySQL中我会这样写:
SELECT
COUNT(IF(grade < 70), 1, NULL)
FROM
grades
ORDER BY
id DESC;
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在Redshift上执行此操作时,它会返回以下错误:
错误:函数if(布尔,整数,"未知")不存在
提示:没有函数匹配给定的名称和参数类型.您可能需要添加显式类型转换.
我检查了条件语句的文档,我找到了
NULLIF(value1, value2)
但它只比较value1和value2,如果这些值相等,则返回null.
我找不到一个简单的IF语句,乍一看我找不到办法去做我想做的事情.
我试图使用CASE表达式,但我没有得到我想要的结果:
SELECT
CASE
WHEN grade < 70 THEN COUNT(rank)
ELSE COUNT(rank)
END
FROM
grades
Run Code Online (Sandbox Code Playgroud)
这是我想要计算的方式:
失败(等级<70)
平均值(70 <=等级<80)
好(80 <=等级<90)
优秀(90 <=等级<= 100)
这就是我期望看到的结果:
+========+=========+======+===========+
| failed | average | good | excellent |
+========+=========+======+===========+
| 4 | 2 | 1 | 4 |
+========+=========+======+===========+
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个:
+========+=========+======+===========+
| failed | average | good | excellent |
+========+=========+======+===========+
| …
Run Code Online (Sandbox Code Playgroud) 在我的redshift数据库中删除或截断一个不太大的表(4M行)时,需要很长时间(小时)才能完成.有人遇到同样的问题吗?
谢谢
球队,
我的红移版本是:
PostgreSQL 8.0.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3), Redshift 1.0.735
Run Code Online (Sandbox Code Playgroud)
如何找出数据库大小,表空间,架构大小和表大小?
但以下不适用于红移(适用于以上版本)
SELECT pg_database_size('db_name');
SELECT pg_size_pretty( pg_relation_size('table_name') );
Run Code Online (Sandbox Code Playgroud)
有没有找到像oracle的替代品(来自DBA_SEGMENTS)
对于tble size,我有以下查询,但不确定MBYTES的确切分析.对于第3行,MBYTES = 372.它意味着372 MB?
select trim(pgdb.datname) as Database, trim(pgn.nspname) as Schema,
trim(a.name) as Table, b.mbytes, a.rows
from ( select db_id, id, name, sum(rows) as rows from stv_tbl_perm a group by db_id, id, name ) as a
join pg_class as pgc on pgc.oid = a.id
join pg_namespace as pgn on pgn.oid = pgc.relnamespace …
Run Code Online (Sandbox Code Playgroud) 我有一个红色群集,我用于一些分析应用程序.我有要添加到clicks
表中的传入数据.假设我每秒要存储约10个新的"点击次数".如果可能,我希望我的数据尽快在红移中可用.
根据我的理解,由于柱状存储,插入性能很差,因此您必须按批次插入.我的工作流程是将点击数存储在redis中,每分钟,我都会将redis中的~600次点击作为批量插入红色.
我必须将一批点击插入到redshift中:
Multi-row insert strategy
:我使用常规insert
查询插入多行.这里有多行插入文档S3 Copy strategy
:我将s3中的行复制为clicks_1408736038.csv
.然后我运行一个COPY
将其加载到clicks
表中.COPY文档在这里我做了一些测试(这是在clicks
已有200万行的表上完成的):
| multi-row insert stragegy | S3 Copy strategy |
|---------------------------+---------------------------+
| insert query | upload to s3 | COPY query |
-------------+---------------------------+--------------+------------+
1 record | 0.25s | 0.20s | 0.50s |
1k records | 0.30s | 0.20s | 0.50s |
10k records | 1.90s | 1.29s | 0.70s |
100k records | 9.10s | …
Run Code Online (Sandbox Code Playgroud) 我想将排序键添加到表中的列但是创建了表.所以我们可以通过命令向列(字段)添加排序键.
提前致谢.
是否有一个查询我可以运行以显示特定模式当前分配的权限?
即如此分配的权限:
GRANT USAGE ON SCHEMA dbo TO MyUser
Run Code Online (Sandbox Code Playgroud)
我试过了
SELECT *
FROM information_schema.usage_privileges;
Run Code Online (Sandbox Code Playgroud)
但这只会返回内置PUBLIC角色的授权.相反,我想看看哪些用户已被授予各种架构的权限.
注意:我实际上使用的是Amazon Redshift,而不是纯粹的PostgreSQL,但如果在Amazon Redshift中无法实现,我会接受纯粹的PostgreSQL答案.(虽然我怀疑它是)
我正在尝试将一些文本文件加载到Redshift.除最终行值之外,它们以制表符分隔.这导致分隔符未找到错误.我只看到一种在COPY语句中设置字段分隔符的方法,而不是设置行分隔符的方法.任何不涉及处理我的所有文件以在每行末尾添加选项卡的想法?
谢谢
我想查看红移补助金.
我找到了postgres的这个视图:
CREATE OR REPLACE VIEW view_all_grants AS
SELECT
use.usename as subject,
nsp.nspname as namespace,
c.relname as item,
c.relkind as type,
use2.usename as owner,
c.relacl,
(use2.usename != use.usename and c.relacl::text !~ ('({|,)' || use.usename || '=')) as public
FROM
pg_user use
cross join pg_class c
left join pg_namespace nsp on (c.relnamespace = nsp.oid)
left join pg_user use2 on (c.relowner = use2.usesysid)
WHERE
c.relowner = use.usesysid or
c.relacl::text ~ ('({|,)(|' || use.usename || ')=')
ORDER BY
subject,
namespace,
item …
Run Code Online (Sandbox Code Playgroud)