突然发现先前的copy to的路径中含有假名、汉字就会提示无法找到文件或目录。
比如:
COPY tb_tmp to ‘C:/新しいフォルダ/tb_tmp.csv’ WITH CSV;
原因至今不明。至于上边的路径里边为什么用/而不用\,是因为遇到\n的情况,就会被当作换行来处理。不知道用quote_literal括起来怎么样,但是不论/还是\,都没办法找到路径。DB是EUC-JP编码,连接的时候指定ENCODING为UNICODE。
怀疑是编码的问题,可是又没有什么具体的证据。只好考虑替代解决方案。就是取一个可以访问的临时目录,然后再在VB中把临时目录中的挪到指定的目录下。
另外还遇到一个问题。COPY TO的情况要求运行postgres服务的账户对目标目录可写。一般创建的目录都是可以用的,但是创建在桌面上的目录就有问题。原因是其访问控制没有继承,因此默认只有系统管理员账号和SYSTEM组的用户可以访问。对于这个,postgresql也是无能为力。好在使用临时目录中转一下也就可以解决这个问题了。