使用批量加载从postgres中提取数据

时间:2018-04-06 05:24:02

标签: sql postgresql pentaho-spoon

-- get the data out of your assemble table, with names from related tables
SELECT u.uname, c.cname, p.pname
FROM users u
INNER JOIN assemble j
   ON u.uid = j.uid
INNER JOIN categories c
   ON j.cid = c.cid
INNER JOIN products p
   ON p.pid = j.pid;

-- Give Mom the same coat... this will fail due to the PRIMARY KEY, even with a different category
INSERT INTO assemble (uid, cid, pid)
   VALUES (
     (SELECT uid FROM users WHERE uname='Mom'),
     (SELECT cid FROM categories WHERE cname='Hats'),
     (SELECT pid FROM products WHERE pname='Flying Jacket')
   );

我想使用批量加载BCP命令从postgresql中提取数据。我可以使用BCP进行posgresql。我使用以下命令进行批量加载。但它没有连接到数据库。

请帮我解释语法。

1 个答案:

答案 0 :(得分:0)

PostgreSQL中的

COPY 命令:

COPY命令允许与服务器之间的高速批量数据传输。拷入和拷出操作都将连接切换到不同的子协议,该协议一直持续到操作完成。

PostgreSQL Protocol v3.0(Postgresql 7.4或更高版本)支持

COPY命令。

有关详细信息,请访问以下链接:

一般语法:

COPY (<select-query-here>) TO <file-path>;

我找到了一个关于如何运行它的问题的答案:

https://ieftimov.com/postgresql-copy

试试这个:

\copy(注意反斜杠)允许您复制到远程数据库或从远程数据库复制,并且不需要超级用户权限。

psql -h remotehost -d remote_mydb -U 
myuser -c "\copy mytable (column1, column2)  from '/path/to/local/file.csv' with delimiter as ','"