我在带有zone.csv命名的Excel工作表中的数据只需要从excel导入几个列到以hc_court_master命名的postgres表
ERROR: extra data after last expected column
SQL state: 22P04
Context: COPY hc_court_master, line 1: "court_code,court_name,short_c_name,category,dist_no,dist_name,category1"
我收到了错误
<tbody id="items-${job.id}" v-for="item in items">
<tr>Item id = {{item.id}}</tr>
....
答案 0 :(得分:2)
有两个问题:
您无法从csv复制少量列。你不能改变他们的秩序。
只需在with子句中使用HEADER
关键字来忽略csv文件中的标头。
copy hc_court_master (court_code, court_name, short_c_name, category, dist_no, dist_name, category1) from 'D:\district.csv' with (format csv, HEADER)
如果您不想要表格中的所有字段,您可以:
导入后的ALTER TABLE DROP COLUMN
导入临时表,然后运行INSERT INTO ... SELECT ...
答案 1 :(得分:0)
如上所述,您无法从CSV加载选定的字段,只能加载整个数据。所以
begin; -- Start transaction
do $$
begin
create temp table t( -- Create table to load data from CSV
court_code text, -- There are whole list of columns ...
court_name text,
short_c_name text,
category text,
dist_no text,
dist_name text,
category1 text) on commit drop;
copy t from '/home/temp/a.csv' with (
format CSV,
header -- To ignore first line
);
end $$;
insert into hc_court_master (district_cd, category,category1,shrt_nm,court_name)
select <appropriate columns> from t;
commit;
答案 2 :(得分:-1)
copy hc_court_master (district_cd, category,category1,shrt_nm,court_name)
from 'D:\district.csv'
with (format csv)
我认为上面的sql只有在你的csv只包含必需的列(zone_cd,category,category1,shrt_nm,court_name)时才有效。
您可以删除额外的列,然后尝试上传。
请参阅以下链接