我正在尝试使用该\COPY函数从客户端的文本文件填充数据库。我正在使用Postgres 交互式终端(psql) 来执行此任务。
我编写了以下脚本并将其保存到test.sql:
CREATE FUNCTION copy_stuff_to_db(path text, encoding text) RETURNS void
AS $$
BEGIN
\COPY table1 FROM path || 'table1.asc' WITH ENCODING encoding;
END;
$$ LANGUAGE plpgsql;
PERFORM copy_stuff_to_db('/home/martin', 'ISO 8859-1')
Run Code Online (Sandbox Code Playgroud)
我是这样执行的:
psql --port 5432 --host localhost -d mydb --username postgres -f test.sql
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
psql:test.sql:12: ERROR: syntax error at or near "\"
LINE 4: \COPY table1 FROM path || 'table1.asc' WITH DE...
^
Run Code Online (Sandbox Code Playgroud)
起初我认为终端不执行 PL/pgSQL,我将不得不放置我的文件并运行脚本服务器端。但是,当我直接调用该函数时(即我将之前的脚本修改为):
\COPY table1 FROM '/home/martin/table1.asc' WITH ENCODING 'ISO 8859-1'; …Run Code Online (Sandbox Code Playgroud)