postgresql 无法在pgAdmin 4中导入文件csv

rbl8hiat  于 2022-12-03  发布在  PostgreSQL
关注(0)|答案(2)|浏览(528)

我将通过pgAdmin 4将数据csv导入postgresql。但是,存在问题

ERROR: invalid input syntax for type integer: ""
CONTEXT: COPY films, line 1, column gross: ""

我了解的错误是行1列总值有空值,在其他一些列也有空值。我的问题,如何导入文件csv,但在该文件中有空值。我一直在谷歌搜索,但没有找到类似我的情况。

CREATE TABLE public.films
(
    id int,
    title varchar,
    release_year float4,
    country varchar,
    duration float4,
    language varchar,
    certification varchar,
    gross int,
    budget int
);

我尝试了下面的代码,但是失败了。

CREATE TABLE public.films
(
    id int,
    title varchar,
    release_year float4 null,
    country varchar null,
    duration float4 null,
    language varchar null,
    certification varchar null,
    gross float4 null,
    budget float4 null
);

error message in image
我已经在google和stackoverflow论坛上搜索过了。我希望有人能帮助解决我的问题

laik7k3q

laik7k3q1#

这对我很有效:https://learnsql.com/blog/how-to-import-csv-to-postgresql/
一个小的变通办法,但它的工作
1.我创建了一个表
1.我将标题添加到csv文件
1.右键单击新创建的表-〉导入/导出数据,选择要上传的csv文件,转到tab 2-选择标题,它应该工作

kt06eoxx

kt06eoxx2#

1.这两个表定义没有区别。列默认接受NULL
1.问题不在于NULL值,而在于空字符串:

select ''::integer;
ERROR:  invalid input syntax for type integer: ""
LINE 1: select ''::integer;

select null::integer;
 int4 
------
 NULL

为现在为integer的字段建立资料类型为varchar的临时数据表。将数据载入该数据表。然后使用类似下列的方式修改将为integer的空字串数据:

update table set gross = nullif(trim(gross), '');

然后将数据移动到生产表。

相关问题