我开始在 porstgresql 中学习 sql。我创建了一个具有 numeric(6,2) 结构的表并尝试导入数据。但数据中有一些行具有 NULL 值。现在我收到“错误:数字类型的输入语法无效:NULL” 现在我至少有 20 列包含该 NULL 值。
遇到这种情况我该怎么办?我应该手动更改所有列还是可以对所有列自动执行此操作?
创建表 ireland_venue_gap_bonus ( id_c 小整数, 公司名称文本、公司 IDsmallint、 平均奖金数字(6,2), 平均每小时数值(6,2), 中位数奖金数值(6,2), 中位数每小时数值(6,2), 报告链接文本, 年_小整数, 平均小时PT 数字(6,2), medianHourlyPT 数值(6,2), 平均每小时温度数值(6,2), 中位数HourlyTemp 数值(6,2), perBonusFemale 数字(6,2), perBonusMale 数字(6,2), perBIK女性数字(6,2), perBIKMale 数字(6,2), pb1女性数字(6,2), pb1男性数字(6,2), pb2女性数字(6,2), pb2男性数字(6,2), pb3女性数字(6,2), pb3男性数字(6,2), pb4女性数字(6,2), pb4男性数字(6,2), 每个员工女性 numeric(6,2), 每个员工男性数字(6,2), 评论文字
)
那么, 复制 ireland_venue_gap_bonus FROM 'E:\Programming\SQL\Project\Data\Ireland_gender_pays_gap\Ireland_gpg.CSV' 带(CSV 格式,标题)
回复消息, 错误:数字类型的输入语法无效:“NULL” 上下文:复制 ireland_venue_gap_bonus,第 2 行,meanhourlypt 列:“NULL”
SQL状态:22P02
cat test.csv
id,val
1,test
2,test2
3,null
create table csv_test (id integer, val varchar);
\copy csv_test from test.csv with csv header null 'null';
COPY 3
\pset null 'NULL'
Null display is "NULL".
select * from csv_test ;
id | val
----+-------
1 | test
2 | test2
3 | NULL
要将 csv 中的字符串
NULL
视为空值,请使用 NULL 'null_string'
中的 COPY
选项(记录于 here):
COPY ireland_income_gap_bonus
FROM 'E:\Programming\SQL\Project\Data\Ireland_gender_pays_gap\Ireland_gpg.CSV'
WITH (FORMAT CSV, HEADER, NULL 'NULL')