csvデータをテーブルにインポートする再帰的プロセスを作成しています。私は私のpgsql関数でhttpリクエストに挿入する必要がある変数を動的に挿入することはできません。postgresql pgsql動的Webリンク
実行形式と動的SQLで%Lを使用して変数 'insert_var'を挿入しようとしています。関数が渡すリンクを見ると、その列に格納されている実際の変数の代わりに 'http://...variable=r1.insert_var ....'と表示されます。私は何を間違えたのですか?
CREATE OR REPLACE FUNCTION recursive_data_import()
RETURNS VOID AS $$
DECLARE
insert_var text;
cur SCROLL CURSOR FOR
select * from symbols order by insert_var;
r1 RECORD;
BEGIN OPEN cur ;
LOOP
FETCH cur INTO r1;
EXIT WHEN NOT FOUND;
DROP TABLE IF EXISTS temp_table;
CREATE TABLE temp_table
(
var1 numeric,
var2 numeric,
);
EXECUTE format('COPY temp_table (var1, var2)
FROM PROGRAM 'wget -q -O - "http://website/Data?variable=%L&Type=0"' WITH (CSV), r1.insert_var);
ALTER TABLE temp_table
ADD COLUMN var3 varchar(10);
UPDATE temp_table
set var3 = r1.insert_var;
INSERT INTO final_table
(
SELECT
var1,
var2,
insert_var
FROM temp_table
);
END LOOP;
CLOSE cur;
END; $$
LANGUAGE plpgsql;
これは、私のリンクの変数が「insert_var」ではなく「insert_var」であることを除いて得られるという点で機能しました。一重引用符を削除する方法はありますか? – user86605
私はそれを理解しました。 EXECUTE形式($ x $ COPY temp_table(var1、var2) FROM PROGRAM 'wget -q -O - "http:// website/Data?変数=%I&Type = 0"' WITH(FORMAT CSV)$ x $、 r1.insert_var); ありがとうございました! – user86605