1

我正在尝试从 Windows 切换到 ubuntu(我正在使用 12.04 LTS)并尝试使用我的一些旧脚本来运行我的旧数据库。以前我使用 postgresql 和 psycopg2 来维护它们,我在这里再次尝试这样做。

我的错误是使用复制专家命令将 csv 文件导入表。

代码如下:

#!/usr/bin/env python
import psycopg2 as psy
import sys

conn = psy.connect("dbname, user, host, password") # with the appropriate  values
curs = conn.cursor()

table = 'tablename' # a table with the appropriate columns etc
file = 'filename' # a csv file
SQL = "COPY %s FROM '%s' WITH CSV HEADERS" % (tablename, filename)

curs.copy_expert(SQL, sys.stdin) # Error occurs here

conn.commit()
curs.close()
conn.close()

发生的具体错误如下:

psycopg2.ProgrammingError:无法打开文件“文件名”进行读取:权限被拒绝

任何帮助将不胜感激:

我完全被卡住了,我相信这是由于我如何设置数据库或文件的一些怪癖。

使用 csv 模块添加一个简单的读取和打印命令也可以正常工作(实际上来自同一个脚本)它将输出 csv 文件中的所有信息,然后在尝试将其导入数据库时​​出错,权限被拒绝

import csv
f = open(filename, 'rb')
read = csv.reader(f, delimiter =',')
for row in read:
    print row
f.close()
4

1 回答 1

1

尝试使用suor以超级用户身份执行命令sudo,如果这没有帮助,另一种可能性是文件名的位置超出范围,所以我会尝试将其复制到桌面或您的主目录或文件夹知道您绝对拥有完全权限,看看这是否有效。

于 2012-04-08T20:22:22.870 回答