Sql 选项的好处\复制和复制不同的客户端和服务器
我尝试将csv数据复制到具有Sql 选项的好处\复制和复制不同的客户端和服务器,sql,postgresql,Sql,Postgresql,我尝试将csv数据复制到具有 #+begin_src sql :engine postgresql :dbuser postgres :dbpassword 1618 :database analysis COPY us_counties_2010 FROM 'data/us_counties_2010.csv' WITH (FORMAT CSV, HEADER); #+end_src 它报告错误 psql:/tmp/babel-x3dXSm/sql-in-zo3MDm:3: ERROR:
#+begin_src sql :engine postgresql :dbuser postgres :dbpassword 1618 :database analysis
COPY us_counties_2010
FROM 'data/us_counties_2010.csv'
WITH (FORMAT CSV, HEADER);
#+end_src
它报告错误
psql:/tmp/babel-x3dXSm/sql-in-zo3MDm:3: ERROR: could not open file "data/us_counties_2010.csv" for reading: No such file or directory
HINT: COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy.
按照指示,我把副本换成了副本,它就工作了
#+begin_src sql :engine postgresql :dbuser postgres :dbpassword 1618 :database analysis
\copy us_counties_2010 FROM 'data/us_counties_2010.csv' WITH (FORMAT CSV, HEADER);
#+end_src
#+RESULTS:
| COPY 3143 |
|-----------|
我很好奇发明两个选项的好处是什么
copy
和'copy',哪种客户端和服务器不同 copy
在服务器端工作,因此文件xxx.csv
应该在服务器中
\copy
是一个在客户端工作的psql命令,因此文件xxx.csv
位于客户端。psql
读取文件并在内部调用stdin的副本。copy
在服务器端工作,因此文件xxx.csv
应该在服务器中
\copy
是一个在客户端工作的psql命令,因此文件xxx.csv
位于客户端。psql
读取文件并在内部调用stdin的副本。\copy
仅存在于“psql”中,它是一个用于连接到PostgreSQL的流行命令行程序,但远不是唯一用于连接到PostgreSQL的程序COPY
是PostgreSQL本身的一个命令,因此可供所有客户端使用\copy
是在copy
之上实现的,因此没有copy
就没有\copy
许多其他客户端都有自己的实现类似于\copy\copy
的方法,它只存在于“psql”中,psql是一个用于连接到PostgreSQL的流行命令行程序,但远不是唯一用于连接到PostgreSQL的程序COPY
是PostgreSQL本身的一个命令,因此可供所有客户端使用\copy
是在copy
之上实现的,因此没有copy
就没有\copy
许多其他客户端都有自己的实现方式,类似于\copy
如何在服务器上定位数据库位置?从pg_设置中选择*,其中name='data_directory'代码>。您可以将文件放在pg有权读取的任何目录中。我经常使用“/tmp/xxx”。我更喜欢\copy
。如何在服务器上定位数据库位置?从pg_设置中选择*,其中name='data_directory'代码>。您可以将文件放在pg有权读取的任何目录中。我经常使用“/tmp/xxx”。我更喜欢\copy
。