Saya mencoba beralih dari Windows ke ubuntu (saya menggunakan 12,04 LTS) dan saya mencoba menggunakan beberapa skrip lama saya untuk menjalankan database lama saya. Sebelumnya saya menggunakan postgresql dan psycopg2 untuk memeliharanya dan saya mencoba melakukannya lagi di sini.
Kesalahan saya adalah saat mengimpor file csv ke tabel menggunakan perintah copy expert.
Kode adalah sebagai berikut:
#!/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()
Kesalahan spesifik yang terjadi adalah sebagai berikut:
psycopg2.ProgrammingError: tidak dapat membuka file "nama file" untuk dibaca: Izin ditolak
Bantuan apa pun akan sangat dihargai:
Saya benar-benar buntu dan saya yakin ini disebabkan oleh beberapa kekhasan dalam cara saya mengatur database atau file.
Menambahkan perintah baca dan cetak sederhana menggunakan modul csv juga berfungsi dengan baik (sebenarnya dari skrip yang sama) Ini akan menampilkan semua informasi dari file csv dan kemudian kesalahan dengan izin ditolak ketika mencoba mengimpornya ke database
import csv
f = open(filename, 'rb')
read = csv.reader(f, delimiter =',')
for row in read:
print row
f.close()
su
karena sistem izin berbeda antara ubuntu dan windows, Anda cenderung perlu menjalankan perintah menggunakansudo
kecuali Anda adalah pengguna root. - person EdChum   schedule 08.04.2012su
atausudo
tapi sepertinya itu tidak akan berhasil juga, apa jadinya jika Anda menyalin file csv ke desktop atau lokasi lain yang Anda pasti tahu Anda memiliki izin penuh untuk melakukan apa pun yang Anda suka dengan file tersebut? Juga apa jalur ke nama file, mungkin jalur tersebut tidak kompatibel dengan konvensi *nix yaitu. meneruskan garis miring/
alih-alih `\` tetapi ini biasanya ditangani oleh python. - person EdChum   schedule 09.04.2012