我想使用 PostgreSQL 中的 COPY 函数将 CSV 文件导入 PostgreSQL 数据库。
在文档中提到文件名的地方,CSV 文件是否必须存储在特定位置,或者是否可以存储在任何位置。
例如,copy data_table from '/tmp/outputdata.csv' WITH DELIMITER AS ',' CSV QUOTE AS '"';
。它在哪里说tmp
,这是否意味着 C: 驱动器中的 tmp 文件夹。可以更改为另一个文件夹名称吗?
我想使用 PostgreSQL 中的 COPY 函数将 CSV 文件导入 PostgreSQL 数据库。
在文档中提到文件名的地方,CSV 文件是否必须存储在特定位置,或者是否可以存储在任何位置。
例如,copy data_table from '/tmp/outputdata.csv' WITH DELIMITER AS ',' CSV QUOTE AS '"';
。它在哪里说tmp
,这是否意味着 C: 驱动器中的 tmp 文件夹。可以更改为另一个文件夹名称吗?
看起来您对 Linux 与 Windows 文件路径表示法感到困惑。你所拥有的是一个锚定到 root 的 Linux 路径。Windows 使用驱动器号,您也可以在 Windows 上运行时指定驱动器号。
如果您使用 Windows 表示法,请注意在不使用时必须转义反斜杠standard_conforming_strings = on
- 这是 Postgres 9.1 或更高版本中的默认值,但在旧版本中不是。像:
COPY data_table from E'C:\\tmp\\outputdata.csv' WITH ...
你standard_conforming_strings = on
可以简单地写:
COPY data_table from 'C:\tmp\outputdata.csv' WITH ...
请注意,PostgreSQL Windows 服务器还可以理解带有斜杠而不是反斜杠的默认路径表示法。
对于 SQL COPY FROM / TO
,您可以使用服务器进程所有者(postgres
默认情况下)具有读/写权限的任何路径。
对于\copy
psql 客户端的 meta 命令,应用当前本地用户的权限。
是的,当然您可以指定您具有读取权限的任何位置。更改文件的路径没有问题。
请只注意在 Windows 上您必须以这种方式转义反斜杠的事实:
copy data_table from 'c:\\Temp\\outputdata.csv' WITH DELIMITER AS ',' CSV QUOTE AS '"';