suvrat Asked: 2019-10-19 04:43:51 +0800 CST2019-10-19 04:43:51 +0800 CST 2019-10-19 04:43:51 +0800 CST 我们可以将数据从 1 个文本文件复制到 2 个 postgresql 表吗? 772 我有一个包含一些数据的文本文件,并且我的 postgresql 数据库中有两个类似的表。是否可以将文件中存在的部分数据(例如前 10 行)复制到第一个表中,而其余部分则复制到第二个表中? postgresql copy 1 个回答 Voted Best Answer Erwin Brandstetter 2019-10-19T05:58:18+08:002019-10-19T05:58:18+08:00 SQLCOPY命令本身对此没有任何规定。但是您可以指定PROGRAM为输入。手册: 当PROGRAM指定时,服务器执行给定的命令并从程序的标准输出中读取,或写入程序的标准输入。该命令必须从服务器的角度指定,并且可由 PostgreSQL 用户执行。 然后,假设您在 Linux 系统上,您可以COPY在前 10 行中使用: COPY tbl1 FROM PROGRAM 'head -n10 /path/to/file/my.csv'; COPY其余的,从第 11 行开始: COPY tbl2 FROM PROGRAM 'sed -n 11,\$p /path/to/file/my.csv'; 或者,COPY没有带有前导#/仅评论的评论(在评论中询问): COPY tbl3 FROM PROGRAM 'awk ''!/^#/'' /path/to/file/my.csv'; COPY tbl4 FROM PROGRAM 'awk ''/#/ { sub(/^#/, ""); print }'' /path/to/file/my.csv'; 最后一个命令从注释中删除前导#(但不是额外的空格)。 查阅man有关 shell 命令的页面或您首选的在线资源head,sed然后awk... 与往常一样,您需要必要的权限。\copy如果您不是超级用户也不是pg_execute_server_program角色成员,请考虑使用 psql meta 命令。 有关的: 使用 Postgres COPY TO 进行数据导出而不覆盖文件
SQL
COPY
命令本身对此没有任何规定。但是您可以指定PROGRAM
为输入。手册:然后,假设您在 Linux 系统上,您可以
COPY
在前 10 行中使用:COPY
其余的,从第 11 行开始:或者,
COPY
没有带有前导#
/仅评论的评论(在评论中询问):最后一个命令从注释中删除前导
#
(但不是额外的空格)。查阅
man
有关 shell 命令的页面或您首选的在线资源head
,sed
然后awk
...与往常一样,您需要必要的权限。
\copy
如果您不是超级用户也不是pg_execute_server_program
角色成员,请考虑使用 psql meta 命令。有关的: