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: ファイル "filename" を読み取り用に開けませんでした: 権限が拒否されました

どんな援助でも大歓迎です:

私は完全に立ち往生しており、データベースまたはファイルの設定方法の癖が原因だと思います。

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 に答える