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

SALIN dengan nama file dinamis

Anda memerlukan SQL dinamis :

CREATE OR REPLACE FUNCTION loaddata(filepathname text)
  RETURNS void AS
$func$
BEGIN
   EXECUTE format ('
   COPY climatedata(
         climatestationid
       , date
         ... -- more columns 
       , tminsflag)
   FROM %L (FORMAT CSV, HEADER)'  -- current syntax
           -- WITH CSV HEADER'    -- tolerated legacy syntax
   , $1);  -- pass function parameter filepathname to format() 
END
$func$ LANGUAGE plpgsql;

format() membutuhkan PostgreSQL 9.1+.
Teruskan nama file tanpa set tambahan tanda kutip tunggal (lolos):

SELECT loaddata('/absolute/path/to/my/file.csv')

format() dengan %L lolos dari nama file dengan aman. Akan rentan terhadap injeksi SQL tanpa itu.

Selain , Anda memiliki ketidakcocokan nama fungsi:

CREATE OR REPLACE FUNCTION public.loaddata(filepathname varchar)
...
ALTER FUNCTION public.filltmaxa(character varying)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bahasa prosedural PostgreSQL C tidak ditemukan

  2. Postgres:mengonversi satu baris menjadi beberapa baris (unpivot)

  3. Memigrasikan Database PostgreSQL Dari On-Prem ke Cloud Menggunakan AWS RDS

  4. Optimalkan kueri maksimum berdasarkan grup

  5. Bagaimana tidak membangun ekstensi PostgreSQL 9.0 pada platform RPM