我正在尝试将一些MySQL表迁移到Amazon Redshift,但遇到了一些问题.
步骤很简单:1.将MySQL表转储到csv文件2.将csv文件上传到S3 3.将数据文件复制到RedShift
步骤3中发生错误:
SQL命令是:
从拷贝TABLE_A 'S3://ciphor/TABLE_A.csv' CREDENTIALS 'aws_access_key_id = XXXX; aws_secret_access_key = XXXX' 定界符 '' CSV;
错误信息:
从复制TABLE_A 'S3://ciphor/TABLE_A.csv' 上执行时的SQL命令时出错CREDENTIALS"aws_access_key_id = XXXX; aws_secret_access_key = XXXX ERROR:COPY不支持CSV [SQL状态= 0A000]执行时间:0.53s 1个陈述失败.
我不知道csv文件的格式是否有任何限制,比如分隔符和引号,我在文档中找不到它.
任何人都可以帮忙吗?
比较Google BigQuery与Amazon Redshift表明两者都可以满足相同的要求,主要因成本计划而异.似乎Redshift配置(定义键和优化工作)与Google BigQuery相比可能在连接表时存在问题.
是否存在Google BigQuery与Amazon Redshift的优缺点列表?
我尝试让一个Kinesis Firehose在Redshift表中推送数据.
firehose流正在工作并将数据放入S3.
但没有任何东西到达Redshift的目的地表.
我该如何解决这个问题?
根据Redshift WITH Clause 文档,您可以将WITH子句与INSERT INTO...SELECT
语句一起使用.但是在测试时,我收到以下错误.这是不可能的,还是我的语法错了?
CREATE TABLE TestCTEInsert (SomeTimestamp TIMESTAMP);
WITH CTE AS
(SELECT GETDATE() as SomeTimestamp)
INSERT INTO TestCTEInsert
(SomeTimestamp) SELECT SomeTimestamp from CTE;
Run Code Online (Sandbox Code Playgroud)
错误:42601:"插入"或附近的语法错误
有趣的是,它确实支持插入新表,即
WITH CTE AS
(SELECT GETDATE() as SomeTimestamp)
INSERT SomeTimestamp INTO NewTable
SELECT SomeTimestamp from CTE;
Run Code Online (Sandbox Code Playgroud)
命令成功完成(受影响的1行)
编辑:只是为了确认,我在使用INTEGER
列而不是TIMESTAMP
:时得到相同的错误:
CREATE TABLE TestCTE (SomeInt INTEGER);
WITH CTE AS
(SELECT 1 as SomeInt)
INSERT INTO TestCTEInsert
SELECT SomeInt from CTE;
Run Code Online (Sandbox Code Playgroud)
错误:42601:"插入"或附近的语法错误
sql common-table-expression amazon-web-services amazon-redshift
我在执行copy命令时遇到问题,无法从S3将数据从S3加载到Amazon的Redshift.
我有以下复制命令:
copy moves from 's3://<my_bucket_name>/moves_data/2013-03-24/18/moves'
credentials 'aws_access_key_id=<key_id>;aws_secret_access_key=<key_secret>'
removequotes
delimiter ',';
Run Code Online (Sandbox Code Playgroud)
当我使用SQL Workbench/j执行此命令时,一切都按预期工作,但是当我尝试使用python和psycopg2执行此命令时,命令传递OK但没有加载数据且没有抛出错误.
尝试了以下两个选项(假设psycopg2连接正常,因为它是):
cursor.execute(copy_command)
cursor.copy_expert(copy_command, sys.stdout)
Run Code Online (Sandbox Code Playgroud)
两者都没有发出警告,但未加载数据
想法?
谢谢
我正在编写一个概念验证应用程序,旨在以每秒约1000条消息的速率获取实时点击流数据,并将其写入Amazon Redshift.
我正在努力获得其他人声称的表现(例如,这里).
我正在运行一个带有2个dw.hs1.xlarge节点(+ leader)的集群,正在执行加载的机器是与运行64位Ubuntu 12.04.1的Redshift集群在同一VPC上的EC2 m1.xlarge实例.
我正在使用Java 1.7(来自Ubuntu repos的openjdk-7-jdk)和Postgresql 9.2-1002驱动程序(主要是因为它是Maven Central中唯一一个使我的构建更容易!).
我已经尝试了这里显示的所有技术,除了最后一个.
我无法使用,COPY FROM
因为我们想要"实时"加载数据,因此通过S3或DynamoDB进行暂存不是一个真正的选择,Redshift不支持COPY FROM stdin
某些原因.
以下是我的日志摘录,显示每个行以大约15 /秒的速率插入:
2013-05-10 15:05:06,937 [pool-1-thread-2] INFO uk.co...redshift.DatabaseWriter - Beginning batch of 170
2013-05-10 15:05:18,707 [pool-1-thread-2] INFO uk.co...redshift.DatabaseWriter - Done
2013-05-10 15:05:18,708 [pool-1-thread-2] INFO uk.co...redshift.DatabaseWriter - Beginning batch of 712
2013-05-10 15:06:03,078 [pool-1-thread-2] INFO uk.co...redshift.DatabaseWriter - Done
2013-05-10 15:06:03,078 [pool-1-thread-2] INFO uk.co...redshift.DatabaseWriter - Beginning batch of 167
2013-05-10 15:06:14,381 [pool-1-thread-2] INFO uk.co...redshift.DatabaseWriter - Done
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我可以采取哪些其他方法?
'test
alpha''1382测试版'
我试过了
其中left(field1,4)喜欢'[0-9] [0-9] [0-9] [0-9]'
这不起作用,从下面的链接看起来像redshift可能不支持:
https://forums.aws.amazon.com/message.jspa?messageID=439850
'where'子句中有错误吗?如果没有,并且redshift不支持该子句,有没有办法过滤?我在考虑使用演员
cast(left(field1,4) as integer)
Run Code Online (Sandbox Code Playgroud)
如果它产生错误,然后通过该行,但不知道如何在亚马逊红移中执行此操作.或者是否存在isnumeric过滤器的其他代理.
谢谢
我正在尝试使用Postgre JDBC驱动程序从SQL Workbench/J连接到Redshift数据库,但我无法通过.我收到此错误"连接尝试失败".jdbc驱动程序位置正确.我还尝试通过Aginity Workbench for Redshift,但它无法显示数据库列表.我有我的连接URL到表单的数据库,jdbc:postgresql://host:port/name_of_database
但令人惊讶的是我甚至无法ping主机.我可以通过亚马逊控制台看到数据库的健康状况良好.所以,我的问题是:
Edit1:将我的公共IP添加到安全组后,主机在ping时解析但仍然有100%的数据包丢失.
Edit2:我可以在EC2-Classic中成功托管数据库,但不能在EC2-VPC中托管数据库.由于我缺少公共IP,我尝试在VPC中重新托管数据库,其中100%的数据包丢失.
Postgre支持此操作如下:
ALTER TABLE name
SET SCHEMA new_schema
Run Code Online (Sandbox Code Playgroud)
该操作在Redshift中不起作用.有没有办法做到这一点?
我试图更新pg_class以设置表的relnamespace(模式id),这需要超级用户帐户并且pg_shadow表中的usecatupd为true.但我得到了许可否认错误.唯一可以修改pg系统表的帐户是rdsdb.
server=# select * from pg_user;
usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig
------------+----------+-------------+----------+-----------+----------+----------+----------------------------------
rdsdb | 1 | t | t | t | ******** | |
myuser | 100 | t | t | f | ******** | |
Run Code Online (Sandbox Code Playgroud)
那真正的红移没有给予许可吗?
有没有一种简单的方法来获取Redshift中可用的所有UDF的列表?此外,我想找到具有参数类型的UDF并按名称搜索UDF.