Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从S3文件到红移构建临时表_Mysql_Postgresql_Csv_Amazon Redshift - Fatal编程技术网

Mysql 从S3文件到红移构建临时表

Mysql 从S3文件到红移构建临时表,mysql,postgresql,csv,amazon-redshift,Mysql,Postgresql,Csv,Amazon Redshift,我在试图以临时表的形式将S3中的一列数据(全部为数字)导入到红移中时遇到了一致的错误。我的问题是: CREATE TEMP TABLE tmp_userid(userid bigint); COPY tmp_userid (userid) FROM 's3://name/recent_prem_idsonly.txt' CREDENTIALS 'aws_access_key_id=XXX;aws_secret_access_key=XXX'; 其结果是: ERROR: Load into ta

我在试图以临时表的形式将S3中的一列数据(全部为数字)导入到红移中时遇到了一致的错误。我的问题是:

CREATE TEMP TABLE tmp_userid(userid bigint);
COPY tmp_userid (userid) FROM 's3://name/recent_prem_idsonly.txt'
CREDENTIALS 'aws_access_key_id=XXX;aws_secret_access_key=XXX';
其结果是:

ERROR: Load into table 'tmp_userid' failed.  Check 'stl_load_errors' 
system table for details.  SQL state: XX000`
然后跟踪显示

Error Code 1207: Invalid digit, Value '8', Pos 7, Type: Long

我注意到,对
userid
的数据类型进行细化会导致不同的错误,所以可能有什么原因?我尝试过将文件保存为csv和txt。

临时表仅存在于单个连接中。红移复制使用无法查看临时表的“带外”连接加载数据。只需使用一个带有“\u tmp”后缀的实际表格,完成后将其删除。

在txt/csv文件中的值周围是否有引号?如果是,请删除它们,或将“removequotes”添加到复制命令中。(我在csv文件中收到了与引号相同的错误。)


即使使用临时表,这也应该有效,我一直都在这样做(用copy将数据加载到临时表,用Redshift将它们与现有表连接,用Redshift更新/插入到永久表)

我意识到这个问题是由csv驱动的,它的[empty]列比Redshift喜欢的多。删除它们会正确创建临时表。

您还可以创建一个与S3文件具有相同架构的临时表,然后使用COPY命令将数据推送到该临时表

CREATE TEMP TABLE test_table 
(
  userid          VARCHAR(10)
);
    

COPY test_table (userid) FROM 's3://name/recent_prem_idsonly.txt'
CREDENTIALS 'aws_access_key_id=XXX;aws_secret_access_key=XXX';

它是否与
创建临时表tmp_userid(userid文本)一起工作?然后,我会在您的文件中查找无效数据,就像错误消息所建议的那样。它不会-我收到相同的错误,代码不同,表示“字符串长度超过DDL长度”。不幸的是,在这个查询中围绕相同的错误集转来转去:CREATE TABLE userid_tmp(userid bigint);从“s3://name/recent\u prem\u idsonly.txt”CREDENTIALS“aws\u access\u key\u id=XXX”复制userid\u tmp(userid);aws_secret_access_key=XXX';现在有什么错误?您可能需要向加载数据的用户授予访问新表的权限。我认为这不是真的。你可以使用一个连接来运行一个带有多个SQL命令的脚本,包括创建一个临时表并复制到其中,我已经完成了,它可以工作了。不,只是文件中的整数。