Saya mencoba mengimpor file CSV ke dalam basis data melalui perintah "COPY"; Namun, saya mendapatkan kesalahan (yang tampaknya umum) bahwa saya harus menjadi superuser dan saya harus menggunakan "\ copy". Namun, ketika menggunakan \ copy, saya mendapatkan kesalahan sintaksis:
ERROR: syntax error at or near "\"
LINE 1: \copy
Dengan tanda sisir menunjuk ke "\". Inilah pertanyaan saya:
\copy tablename(column2, column3, column4, column5) from '/home/uploads/data.csv' WITH DELIMITER ',' CSV HEADER'
Saya mencoba "salin" dan "\ salin". Yang pertama memberi saya kesalahan pengguna super yang terakhir memberi saya kesalahan sintaks. Ada ide tentang cara memperbaikinya? buat itu bekerja?
Saya menjalankan perintah melalui bidang input sql myPgAdmin.
Satu-satunya pertanyaan lain yang saya miliki adalah mengenai mengimpor kolom melalui tablename (kolom2, kolom3 dan seterusnya. Apakah itu sintaks yang benar untuk itu?
sumber
Silakan merujuk ke manual postgres untuk COPY .
Dalam pgAdmin (atau string sql yang Anda berikan melalui skrip atau koneksi db lainnya) Anda hanya akan menggunakan COPY tanpa awalan "\".
jadi masukkan sesuatu seperti:
COPY tablename....
Anda perlu memastikan bahwa Anda memiliki hak istimewa yang relevan untuk menjalankan perintah, jadi dalam hal ini Anda harus dapat login ke database dan memiliki akses tulis ke 'tablename'. Postgres juga harus dapat menjangkau file, sehingga path / home / uploads / harus dapat diakses di server database dan pengguna postgres harus dapat membaca file - periksa izin untuk file dan direktori.
sumber
Pada sistem 9,1 saya kesalahan yang saya dapatkan cukup informatif:
Jika Anda membaca petunjuk itu lagi dengan seksama, Anda dapat menyalin dari stdin. Inilah yang sebenarnya \ copy dalam psql di back-end. Lihat dokumen di http://www.postgresql.org/docs/8.3/static/sql-copy.html untuk informasi lebih lanjut.
Anda kemudian bisa memasukkan isi salinan ke dalam kueri Anda atau setidaknya begitulah cara kerjanya di psql.
sumber
Begitulah cara saya melakukannya di pgAdmin3. Tapi periksa hak pengguna dengan hati-hati, terkadang hak adalah masalahnya. (postgres pengguna di filename.txt / chmod 777)
sumber
Metode lain adalah membuat tampilan untuk kueri sql. Kemudian gunakan perintah \ copy.
sumber