PostgreSQL 通过 copy 命令导入几何数据 及 通过 CopyManager.copyIn() 导入几何数据
COPY命令介绍
copy是postgresql提供的一个专门用于快速导入导出数据的命令,通常用于从文件(TXT、CSV等)或标准输入输出中读取或写入数据。适合批量导入导出数据,速度快。
默认情况下,如果在处理过程中遇到错误,COPY将失败。
COPY只能用于表,不能用于视图!!!
COPY导入数据
例如有一个users.csv的文件,文件内容如下:
username,email,created_at
john_doe,john@example.com,2025-05-01
alice,alice@example.com,2025-04-30
使用如下命令可以将此文件导入表:
COPY table_name FROM 'file_path' WITH (FORMAT csv);
COPY users (username, email, created_at) FROM '/path/to/users.csv' WITH (FORMAT csv, DELIMITER ',', HEADER, NULL 'null');
COPY导出数据
使用如下命令可以导出表数据到文件:
COPY table_name TO 'file_path' WITH (FORMAT csv);
COPY users TO '/path/to/users_export.csv' WITH (FORMAT csv, HEADER, NULL 'null');
- FORMAT csv:表示文件格式为csv
- HEADER:导入数据时,表示文件的第一行为列名,如果第一行为数据行,则设置为 HEADER false;导出数据时,要导出列名称,设置为True,否则设置为false
- DELIMITER ‘,’ :指定文件分隔符为","
- NULL ‘null’ :在导入数据是遇到null字符串时,将其当做NULL值插入到表中。在导出数据时,遇见NULL值将被转换为null字符串写入文件
COPY 导入几何数据
如果要导入几何数据到表Geometry列,对于导入的数据有格式要求。具体的格式要求见文章最下面。
查看pg数据库中Geometry列支持的隐式转换规则
--查看隐式转换规则
SELECT castsource::regtype, casttarget::regtype, castfunc::regproc, castcontext
FROM pg_cast
WHERE casttarget = 'geometry'::regtype;
可以看到pg数据库支持隐式转换,将text转换为geometry,但是text必须是标准的可以识别为几何的字符串,例如:SRID=4326;POINT(10 20),必须指定SRID,否则隐式转换失败,报错: ERROR: Geometry SRID (0) does not