Я пытаюсь переключиться с 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()
su
, поскольку система разрешений отличается между Ubuntu и Windows, вам, как правило, нужно выполнять команды, используяsudo
, если вы не являетесь пользователем root. - person EdChum   schedule 08.04.2012su
илиsudo
, но похоже, что это тоже не сработает, что произойдет, если вы скопируете файл csv на рабочий стол или в другое место, о котором вы точно знаете, что у вас есть полные права делать с файлом все, что вам нравится? Также каков путь к имени файла, возможно, путь несовместим с соглашением * nix, т.е. перенаправляет косую черту/
вместо `\`, но обычно об этом заботится python. - person EdChum   schedule 09.04.2012