1、下面图中就是当时的出错信蝌怦吩曰息,显示没法打开对应的文件进行写操作,错误原因是权限拒绝。但是在linux上没有这个问题,想了一下,在l足毂忍珩inux上postgresql是postgres这个用户来运行的,但是在windows上我还不熟悉是哪个用户。
2、连接到那台运行PostgreSQL的windows服务器上,在我要写入的E盘上点击右键,选择属性,然后选择选项卡。可以看到,里面并没有postgres这个用户。
3、这个时候我在桌面上的任务栏点右键,选择任务管理器,然后在任务管理器中赵找到postgresql进程,可以看到默认情况下,postgresql进程是由NETWORK SERVICE这个系统用户来运行的,难怪会没有权限。
4、这个时候有两个解决方案,第一个是将NETWORK SERVICE这个用户添加到权限列表里去,但是这个用户等级比较低,这样做风险比较大。不能做,那么只能暂时开放E盘给所有用户写入的权限,即修改everyone用户的权限。这样只有可以登录的用户或者网络连接用户才能写入。点击everyone用户,然后点击编辑按钮。
5、在everyone用户的权限页面可以看到,默认是没有写入权限的,把写入权限勾选上,然后点击确定,应用这些修改。
6、这个时候就会针对E盘里的所有文件夹开始修改权限, 如果文件比较多大的话,会需要较长的时间。等待它修改完毕。
7、修改完毕之后,我们再回到PostgreSQL的命令行界面,然后执行刚才的copy命令来复制表里面的数据。可以看到,这次就不会出错了,能够成功复制。复制完成以后,在E盘中就能看到对应的文件了。