Я настраиваю приложение Django на Heroku и нуждаюсь в преобразовании из backdresql в sqlite3 db. К сожалению, я использую общую базу данных и поэтому не могу получить прямой доступ к оболочке db с помощью psql, а также не могу выполнить команду COPY
с файлом.COPY to POSTGRESQL от STDIN в Python/Django (на Heroku)
Например, это не работает:
from django.db import connection, transaction
cursor = connection.cursor()
cursor.execute("copy table_name from 'table_dump.dmp' delimiters ',' csv;")
Я получаю эту ошибку:
DatabaseError: must be superuser to COPY to or from a file
HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.
Так что я попытался прочитать файл в команду COPY в виде строки, например, так:
cursor.execute("copy tabe_name from '%s' delimiters ',' csv header;" % f.read())
(по большей части, это довольно маленькие файлы 131Kb на макс.)
И я получаю ту же ошибку (в дополнение к много горя не избежать моего "правильно - сколько обратные косые мне нужен?)
Итак, что это самый простой способ COPY
к PostgreSQL в рамках Django shell? Я думал, что это будет так же просто, как подавать строку вместо ссылки на файл.
Отличное предложение, но я не могу получить его, чтобы фактически открыть базу данных. – tchaymore