Secara umum, substitusi variabel berfungsi dengan perintah meta (dimulai dengan garis miring terbalik), tetapi \copy
adalah pengecualian, seperti yang didokumentasikan dalam halaman manual
psql :
Saya tidak setuju dengan komentar @BaconBits untuk pertanyaan yang EXECUTE
plpgsql bisa menjadi jawabannya. Pernyataan sisi server, dinamis atau lainnya, tidak akan mengakses sistem file sisi klien, bertentangan dengan \copy
. Anda dapat menggunakan COPY
sebagai gantinya, tetapi itu harus menjadi pengguna super dan file itu dapat diakses oleh postgres
pengguna di server.
Saya percaya bahwa untuk \copy
dari nama file variabel, variabel harus disuntikkan ke dalam skrip sebelum psql
membacanya. Anda dapat mengintegrasikan skrip SQL ke dalam skrip shell dan memasukkannya ke psql
sebagai string di sini yang dapat ditambal, atau filter melalui sed
atau perl
atau metode unix-ish serupa.