计算机:Mac OS X,版本10.8数据库:Postgres
试图将csv文件导入postgres.
pg> copy items_ordered from '/users/darchcruise/desktop/items_ordered.csv' with CSV;
ERROR: could not open file "/users/darchcruise/desktop/items_ordered.csv" for reading: Permission denied
Run Code Online (Sandbox Code Playgroud)
然后我试了一下
$> chown postgres /users/darchcruise/desktop/items_ordered.csv
chown: /users/darchcruise/desktop/items_ordered.csv: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
最后,我试过了
$> ls -l
-rw-r--r-- 1 darchcruise staff 1016 Oct 18 21:04 items_ordered.csv
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢!
我有一个CSV文件.如果文件与数据库位于同一服务器上,我可以使用下面的命令将数据插入数据库:
psql -h localhost -d local_mydb -U myuser -c "copy mytable (column1, column2) from '/path/to/local/file.csv' with delimiter as ','"
Run Code Online (Sandbox Code Playgroud)
但该文件位于本地服务器上,而该数据库位于另一台(远程)服务器上.
如果我尝试为远程服务器执行此操作,请使用以下命令:
psql -h remotehost -d remote_mydb -U myuser -c "copy mytable (column1, column2) from '/path/to/local/file.csv' with delimiter as ','"
Run Code Online (Sandbox Code Playgroud)
我得到了一个被许可拒绝的例外.
如何在没有超级用户权限的情况下将数据从本地文件插入远程服务器上的数据库?
有没有办法将 CSV 文件数据直接复制到 JSON 或 JSONb 数组中?
例子:
CREATE TABLE mytable (
id serial PRIMARY KEY,
info jSONb -- or JSON
);
COPY mytable(info) FROM '/tmp/myfile.csv' HEADER csv;
Run Code Online (Sandbox Code Playgroud)
注意:每个 CSV 行都映射到一个 JSON 数组。这是一个普通的CSV。
普通 CSV(没有嵌入 JSON)... /tmp/myfile.csv=
a,b,c
100,Mum,Dad
200,Hello,Bye
Run Code Online (Sandbox Code Playgroud)
正确的 COPY 命令必须等同于通常的复制波纹管。
CREATE TEMPORARY TABLE temp1 (
a int, b text, c text
);
COPY temp1(a,b,c) FROM '/tmp/myfile.csv' HEADER csv;
INSERT INTO mytable(info) SELECT json_build_array(a,b,c) FROM temp1;
Run Code Online (Sandbox Code Playgroud)
它很丑,因为:
需要一个修道院有关领域的知识,和以前CREATE TABLE用它。 …