PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara mengekspor file teks lengkap dengan SQL?

COPY tidak dirancang untuk ini. Ini dimaksudkan untuk menangani data terstruktur tabel, sehingga tidak dapat bekerja tanpa beberapa cara untuk membagi baris dan kolom; akan selalu ada beberapa karakter yang COPY FROM ditafsirkan sebagai pemisah, dan yang COPY TO akan memasukkan beberapa urutan pelarian jika menemukannya di data Anda. Ini tidak bagus jika Anda mencari fasilitas I/O file umum.

Faktanya, server database tidak dirancang untuk I/O file umum. Untuk satu hal, apa saja yang berinteraksi langsung dengan sistem file server akan membutuhkan peran pengguna super. Jika memungkinkan, Anda hanya perlu menanyakan tabel seperti biasa, dan menangani file I/O di sisi klien.

Meskipun demikian, ada beberapa alternatif:

  • Built pg_read_file() fungsi, dan pg_file_write() dari adminpack modul, menyediakan antarmuka paling langsung ke sistem file, tetapi keduanya terbatas pada direktori data cluster (dan saya tidak akan merekomendasikan menyimpan file acak yang dibuat pengguna di sana).
  • lo_import() dan lo_export() adalah satu-satunya fungsi bawaan yang saya tahu yang berhubungan langsung dengan file I/O dan yang memiliki akses tidak terbatas ke sistem file server (dalam batasan yang diberlakukan oleh OS host), tetapi antarmuka Objek Besar tidak terlalu ramah pengguna ....
  • Jika Anda menginstal varian bahasa prosedural yang tidak tepercaya seperti Perl (plperlu ) atau Python (plpythonu ), Anda dapat menulis fungsi pembungkus untuk rutinitas I/O asli bahasa tersebut.
  • Tidak banyak yang tidak dapat Anda capai melalui COPY TO PROGRAM jika Anda cukup bertekad - salah satunya, Anda dapat COPY (SELECT 1) TO PROGRAM 'mv <source_file> <target_file>' untuk mengatasi keterbatasan pg_file_write() - meskipun ini agak mengaburkan batas antara SQL dan alat eksternal (dan siapa pun yang mewarisi basis kode Anda kemungkinan besar tidak akan terkesan...).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menginstal driver PDO untuk PostgreSQL di Mac (menggunakan Zend untuk Eclipse)

  2. Apakah fungsi PostgreSQL bersifat transaksional?

  3. dengan aman menentukan klausa 'pesan berdasarkan' dari input pengguna di python / postgresql / psycopg2

  4. mengakses alias kolom di klausa where di postgresql

  5. Dapatkan tanggal pertama bulan di postgres