PostgreSQL にシステム パスを格納する適切な場所を見つけようとしています。
私がやろうとしているのは、COPY コマンドを使用して値をテーブルにロードすることです。ただし、定期的に同じファイル パスを参照するため、そのパスを 1 か所に格納したいと考えています。適切なパスを返す関数を作成しようとしましたが、COPY コマンドで関数を呼び出すと構文エラーが発生します。これが正しい方法かどうかはわかりませんが、とにかくコードを投稿します。
コピー コマンド:
COPY employee_scheduler.countries (code, name)
FROM get_csv_path('countries.csv')
WITH CSV;
関数の定義:
CREATE OR REPLACE FUNCTION
employee_scheduler.get_csv_path(IN file_name VARCHAR(50))
RETURNS VARCHAR(250) AS $$
DECLARE
path VARCHAR(200) := E'C:\\Brian\\Work\\employee_scheduler\\database\\csv\\';
file_path VARCHAR(250) := '';
BEGIN
file_path := path || file_name;
RETURN file_path;
END;
$$ LANGUAGE plpgsql;
これを達成する方法について誰かが別の考えを持っている場合、私は提案を受け付けています。
アップデート:
私が受け取っているエラーは次のとおりです。
エラー: 「employee_scheduler」またはその付近で構文エラーが発生しました LINE 12: FROM employee_scheduler.get_csv_path('countries.csv')
次のステートメントを試してみましたが、うまくいきませんでした。
COPY employee_scheduler.countries (code, name)
FROM employee_scheduler.get_csv_path('countries.csv')
WITH CSV;
COPY employee_scheduler.countries (code, name)
FROM (employee_scheduler.get_csv_path('countries.csv'))
WITH CSV;
COPY employee_scheduler.countries (code, name)
FROM (SELECT * FROM employee_scheduler.get_csv_path('countries.csv'))
WITH CSV;
これを達成しようとしている方法は不可能だと思い始めています。他の誰かがこれを達成する方法について何か考えを持っていますか? copyステートメントを使用したい場合は、どこにでもパスをハードコーディングする必要があるかもしれません...
助けてくれてありがとう。