我的基于节点的Web应用程序要求用户将lat文件作为csv文件上传。使用blob存储方法上传文件。但是现在我无法将文件直接导入到postgres数据库中,因为该表包含列ID,创建时间,纬度,很长时间,而csv文件仅包含纬度和长信息。由于这个原因,该表可能包含以前的值,我想导入可能不起作用,并且我想插入是唯一的选择。
请帮助我解决该问题。
答案 0 :(得分:2)
您应首先将经纬度数据导入临时表中。
如果lat_long.csv
文件具有以下结构:
lat, long
41.99646, 21.43141
40.24555, 20,24536
39.24152, 25.263634
然后您可以创建一个临时表:
CREATE TABLE lat_long_temp (lat DECIMAL, long DECIMAL);
并使用以下命令将数据导入表中:
COPY lat_long_temp FROM 'path-to-the-file' CSV HEADER DELIMITER ',';
将path-to-the-file
文件替换为lat_long.csv
文件的路径。
此后,您可以查询该表,并通过为created_time
列附加值来将结果添加到表中。
因此,如果您的结果表如下所示:
CREATE TABLE result_table (
id BIGSERIAL PRIMARY KEY,
created_time TIMESTAMP,
latitude DECIMAL,
longitude DECIMAL
);
您可以使用以下查询从lat_long_temp
表中插入数据:
INSERT INTO result_table (created_time, latitude, longitude)
SELECT now(), lat, long
FROM lat_long_temp;
请注意,我假设您的ID
列是自动递增的列,因此,无需为该列设置值。
如果您的ID
不是自动生成的,那么您还必须在插入语句中为该列添加值。
答案 1 :(得分:0)
如果另一列具有默认值或由触发器填充,则只能从CSV文件中复制经/纬度列:
COPY my_table(latitude, longitude)
FROM 'path-to-the-file' CSV HEADER DELIMITER ',';