redshift | copy命令

fcy6dtqo  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(224)

我正在将一些行从mysql环境导入到redshift。在这个过程中,我将其转换为csv(使用pandas),将其放在s3中,然后从那里运行一个复制命令,将其转换为红移。
但我注意到,有时一些整数被转换成浮点:

EG: 1234 -> 1234.0

问题是在执行copy命令时,列的类型为bigint而不是float,因此我得到一个错误类型:

Invalid digit, Value '.', Pos 7, Type: Long                                                         
1695111.0

我知道我可以将它转换为bigint类型,但是进行提取的函数必须是动态的,我不能对这样的列进行显式更改。主要原因是我在做一个摘录 SELECT * FROM table 在许多表中,标记特定列既困难又耗时。
我的解决方法是将列更改为float,但理想情况下,我希望将它们保持为int。复制命令中可能有一个功能,它只遵循目标列的数据类型,而不是基于源列的数据类型?
有什么想法吗?
复制功能,以防万一:

COPY "{kwargs['schema']}".{kwargs['table_qa']} ({col_names})
FROM 's3://{kwargs['bucket']}/{kwargs['csv_name']}'
WITH CREDENTIALS {S3_KEY}
CSV
FILLRECORD
IGNOREHEADER {kwargs['ignore_header']}

非常感谢!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题