postgresql - PostgreSQL:错误:重复键值违反唯一约束
问题描述
我有一个具有以下结构的表:
CREATE TABLE admin.file_status
(
feed_id bigint,
run_id text COLLATE pg_catalog."default",
extracted_date text COLLATE pg_catalog."default",
file_name text COLLATE pg_catalog."default",
start_time timestamp without time zone,
end_time timestamp without time zone,
file_size bigint,
job_type text COLLATE pg_catalog."default",
status text COLLATE pg_catalog."default",
crypt_flag character(1) COLLATE pg_catalog."default",
destination_path text COLLATE pg_catalog."default",
header_file character(1) COLLATE pg_catalog."default",
merge_status text COLLATE pg_catalog."default",
compression_status text COLLATE pg_catalog."default",
file_split_status text COLLATE pg_catalog."default",
data_transfer_status text COLLATE pg_catalog."default",
CONSTRAINT file_status_ukeyUNIQUE (run_id, file_name)
);
当我运行以下命令时,它在第一次尝试时成功执行,但我没有看到任何新数据插入到表中。
env 'PGOPTIONS=-c search_path=admin -c client_min_messages=error' psql -h hostname -U user -p 25011 -d xplatform -c "\copy admin.file_status(feed_id,run_id,extracted_date,file_name,start_time,file_size,file_split_status) FROM '../temp/213/split_file_list.csv' delimiter ',' csv;commit;"
当我第二次运行它时,出现以下错误:
ERROR: duplicate key value violates unique constraint "file_status_ukey"
DETAIL: Key (run_id, file_name)=(1622722357003791, '20210420125933_NOTIFICATION_1_1.txt') already exists.
CONTEXT: COPY juniper_extd_file_status, line 1
为什么我在表格中看不到任何数据?
解决方案
PostgreSQL 不会在该错误消息中的值周围加上引号。因此,您看到的引号是插入的文字值的一部分。
因此,要查看存在冲突的现有行,您需要执行以下操作:
SELECT * FROM admin.file_status where file_name='''20210420125933_NOTIFICATION_1_1.txt'''
或者
SELECT * FROM admin.file_status where file_name=$$'20210420125933_NOTIFICATION_1_1.txt'$$
或类似的。
推荐阅读
- python - 如何加快每行的数据帧 std() 计算?
- javascript - Javascript 优化 - 从列表中查找 id 并将其映射到 Tree
- java - 创建名为“org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter”的bean时出错
- javascript - 如何重置 angular2 表单中定义的下拉列表的值?
- javascript - 使用 Canvas JS 在页面中渲染多个图表
- flutter - 如果用户尚未登录,如何显示登录页面,如果用户已登录,如何显示帐户页面
- c - lseek() 的偏移量和大块设备
- r - 到达时间间隔中绝对时间的 R 向量
- python - 列表匹配中大小写不同的计数问题
- windows - rtsp 到 youtube 流在 Windows 中不起作用