我正在使用Django和Postgres,并尝试将数据从csv加载到表。但是,由于一个字段是Geometry Field,因此我在加载表时必须将其留空(否则\copy from
将失败)。
这是我的模特:
name = models.CharField(max_length=200)
lat = models.DecimalField(max_digits=6, decimal_places=4, default=Decimal('0.0000'))
lon = models.DecimalField(max_digits=7,decimal_places=4, default=Decimal('0.0000'))
geom = models.PointField(srid=4326, blank=True, null=True, default=None)
在迁移之后,我运行了这样的psql:
mydb=>\copy target(name,lat,lon) from 'file.csv' DELIMITER ',' CSV HEADER ;
我得到这样的错误:
ERROR: null value in column "geom" violates not-null constraint
DETAIL: Failing row contains (name1, 30.4704, -97.8038, null).
CONTEXT: COPY target, line 2: "name1, 30.4704, -97.8038"
这里是csv文件的一部分:
name,lat,lon
name1,30.4704,-97.8038
name2,30.3883,-97.7386
这里是\ d +目标:
mydb=> \d+ target
Table "public.target"
Column | Type | Modifiers | Storage | Stats target | Description
------------+------------------------+-----------+----------+--------------+-------------
name | character varying(200) | not null | extended | |
lat | numeric(6,4) | not null | main | |
lon | numeric(7,4) | not null | main | |
geom | geometry(Point,4326) | | main | |
Indexes:
"target_pkey" PRIMARY KEY, btree (name)
"target_geom_id" gist (geom)
所以我想在将csv加载到表时将geom设置为null?我该如何解决?我想设置默认的归档geom为null,以便我可以使用其他查询更新它。
非常感谢!!