PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

SAO CHÉP với tên tệp động

Bạn cần SQL động :

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() yêu cầu PostgreSQL 9.1+.
Chuyển tên tệp mà không có thêm bộ dấu nháy đơn (thoát):

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

format() với %L thoát khỏi tên tệp một cách an toàn. Sẽ dễ bị chèn SQL không có nó.

Bên cạnh , bạn có tên hàm không khớp:

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. PHP và Postgres:bắt lỗi?

  2. Điều gì xảy ra với các bản sao khi chèn nhiều hàng?

  3. Bỏ qua dấu ngoặc kép để thực hiện truy vấn trên PostgreSQL

  4. Sửa chữa hỏng cơ sở dữ liệu postgresql

  5. PostgreSQL:giữa với datetime