PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

गतिशील फ़ाइल नाम के साथ कॉपी करें

आपको डायनामिक SQL की आवश्यकता है :

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() PostgreSQL 9.1+ की आवश्यकता है।
फ़ाइल नाम को बिना अतिरिक्त सेट (बच निकले) सिंगल कोट्स के पास करें:

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

format() %L . के साथ फ़ाइल नाम से सुरक्षित रूप से बच निकलता है। SQL इंजेक्शन के लिए अतिसंवेदनशील होंगे इसके बिना।

एक तरफ , आपके पास एक फ़ंक्शन नाम बेमेल है:

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. Django ORM में postgresql विंडो फ़ंक्शंस का उपयोग करने का साफ तरीका?

  2. PostgreSQL के लिए डेटा स्टोर की तुलना करना - MVCC बनाम InnoDB

  3. रेल:रेक डीबी पर डेटाबेस बनाने के लिए पोस्टग्रेज अनुमति अस्वीकार कर दी गई:बनाएं:सभी

  4. मैं PostgreSQL में कॉलम डिफ़ॉल्ट मान कैसे बदलूं?

  5. PostgreSQL 11 - प्रक्रियाएं