小编Mar*_*dik的帖子

为什么从 PL/pqSQL 函数调用时 \COPY 不起作用?

我正在尝试使用该\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)

postgresql psql

2
推荐指数
1
解决办法
3017
查看次数

标签 统计

postgresql ×1

psql ×1