作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经复制了函数(从其中一个门户网站并进行了相应修改)以将数据从 csv 文件复制到表中。
create or replace function public.load_csv_file
(
target_table text,
csv_path text,
col_count integer
)
returns void as $$
declare
iter integer; -- dummy integer to iterate columns with
col text; -- variable to keep the column name at each iteration
col_first text; -- first column name, e.g., top left corner on a csv file or spreadsheet
begin
set schema 'public';
create table insert_from_csv ();
-- add just enough number of columns
for iter in 1..col_count
loop
execute format('alter table insert_from_csv add column col_%s text;', iter);
end loop;
-- copy the data from csv file
execute format('copy insert_from_csv from %L with delimiter '','' quote ''"'' csv ', csv_path);
iter := 1;
col_first := (select col_1 from insert_from_csv limit 1);
-- update the column names based on the first row which has the column names
for col in execute format('select unnest(string_to_array(trim(temp_table::text, ''()''), '','')) from temp_table where col_1 = %L', col_first)
loop
execute format('alter table insert_from_csv rename column col_%s to %s', iter, col);
iter := iter + 1;
end loop;
-- delete the columns row
execute format('delete from insert_from_csv where %s = %L', col_first, col_first);
-- change the temp table name to the name given as parameter, if not blank
if length(target_table) > 0 then
execute format('alter table insert_from_csv rename to %I', target_table);
end if;
end;
$$ language plpgsql;
和传递参数为
选择 load_csv_file('Customer','C:\Insert_postgres.csv' ,4)
但是收到错误信息
错误:必须是 super 用户才能复制到文件或从文件复制 提示:任何人都可以 COPY 到标准输出或从标准输入。 psql 的\copy 命令也适用于任何人。
我的想法是,我将创建一个自动化测试,如果我想在不同的实例上进行测试,那么测试应该自动创建函数并从 csv 文件复制数据。是否有任何解决方法可以在没有 super 用户的情况下复制数据?
最佳答案
看起来Insert_postgres.csv在C盘,一般没有读/写权限。将文件移动到您的目录,至少某些组或每个人都可以读/写。希望能解决问题
关于postgresql - PostgreSQL - 错误 : must be superuser to copy to or from a file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44716858/
我是一名优秀的程序员,十分优秀!