copy - Redshift:COPY 命令针对具有 DEFAULT 值的 NOT NULL 列
问题描述
我的 redShift 数据库中有一个场景,其中我的表有 NOT NULL 日期列,默认为 SYSDATE。我正在尝试通过 COPY 命令加载数据,而 csv 文件中没有日期列。但是,当我加载时,COPY 命令会抛出一个错误。请让我知道我们是否还有其他选择来解决此问题。
解决方案
由于您没有提供您得到的确切错误,我将尝试通过简单的用例引导您。然后,我认为您可以尝试复制它。
如果您只是跳过命令中的列default
应该copy
可以解决您的问题,还有一件事,如果您Copy
通过代码(java/python
等)进行操作,请确保您是committing
事务。
使用以下步骤制作一个简单的工作程序。
create table sales(
salesid integer not null,
category varchar(10),
update_at timestamp DEFAULT SYSDATE);
创建一个Test.csv
包含以下内容的文件。
1,Cat1
2,Cat2
3,Cat3
4,Cat1
5,Cat1
6,Cat3
7,Cat1
10,Cat1
运行以下命令。
Copy sales(salesid,category) from 's3://***/Test.csv' credentials'aws_access_key_id=*******;aws_secret_access_key=********' delimiter ',';
输出:复制 sales(salesid,category) from 's3:// //Test.csv' credentials'aws_access_key_id= *****;aws_secret_access_key=****' delimiter ','; 信息:加载到表 'sales' 已完成,成功加载 8 条记录。复制;
$Select * from Sales;
salesid | category | update_at
---------+----------+----------------------------
4 | Cat1 | 2018-08-14 05:56:33.644541
10 | Cat1 | 2018-08-14 05:56:33.644541
2 | Cat2 | 2018-08-14 05:56:33.644541
6 | Cat3 | 2018-08-14 05:56:33.644541
3 | Cat3 | 2018-08-14 05:56:33.644541
7 | Cat1 | 2018-08-14 05:56:33.644541
1 | Cat1 | 2018-08-14 05:56:33.644541
5 | Cat1 | 2018-08-14 05:56:33.644541
(8 rows)
推荐阅读
- angular - 如何防止 Karma 在调试/错误中显示缩小的代码?
- javascript - eslint 中只有箭头函数?
- javascript - Chrome 扩展:拦截 HTTP 响应
- python - 在 shell 中将用户输入回显为“*”或类似的东西
- csv - JMeter:如何节省csv中每个线程的响应时间
- java - “冲突的字符串创建者:已经明确标记...”;创建者在哪里明确标记?
- regex - 从日志文件中提取特定的 XML
- python - Python中的Selenium Grid - 每次第一次测试后功能测试超时
- windows - 在没有本地管理员访问权限的情况下运行 Corda -CordaDemoBench
- typescript - 如何使用类型检查设置对象属性,但在更改时触发函数