COPY mit dynamischem Dateinamen

8

Ich versuche eine Funktion zum Laden von CSV-Daten in eine Tabelle zu schreiben. Ich möchte, dass das Eingabeargument der Pfad zur Datei ist.

%Vor%

Wenn ich versuche, diese Funktion zu erstellen, bekomme ich

  

Syntaxfehler bei $ 1

Was ist daran falsch?

    
Ben Gosack 15.04.2013, 15:51
quelle

1 Antwort

10

Zunächst haben Sie einen Funktionsnamen, der nicht übereinstimmt:

%Vor%

Aber das ist ein zusätzliches Problem.

Antwort

Sie benötigen dynamisches SQL:

%Vor%

format() benötigt PostgreSQL 9.1 +. < br> Auf diese Weise können wir den Dateinamen ohne einen zusätzlichen Satz von (gestrichenen) einfachen Anführungszeichen angeben. Anruf:

%Vor%

Dies ist sehr anfällig für SQL-Injektion . Um dagegen abzusichern benutze ich format() mit %L , um den Dateinamen zu bereinigen. Dies sorgt auch für die notwendigen umschließenden einfachen Anführungszeichen.

    
Erwin Brandstetter 15.04.2013, 18:04
quelle