postgresql pgsql 动态网站 link
postgresql pgsql dynamic web link
我正在创建一个递归过程以将 csv 数据导入 table。我似乎无法使用 pgsql 函数将我需要插入的变量动态插入到我的 http 请求中。
我正在尝试使用带有执行格式和动态 sql 的 %L 插入变量 'insert_var'。当我看到函数传递的 link 时,它说的是“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;
行中的撇号看起来很乱
EXECUTE format('COPY temp_table (var1, var2)
FROM PROGRAM 'wget -q -O - "http://website/Data?variable=%L&Type=0"' WITH (CSV), r1.insert_var);
您可以使用自定义字符串分隔符:
EXECUTE format($x$COPY temp_table (var1, var2)
FROM PROGRAM 'wget -q -O - "http://website/Data?variable=%L&Type=0"' WITH (CSV)$x$, r1.insert_var);
我在 Pavel 的帮助下弄明白了!
EXECUTE format($x$COPY temp_table (var1, var2)
FROM PROGRAM 'wget -q -O - "http://website/Data?variable=%I&Type=0"' WITH (FORMAT CSV)$x$, r1.insert_var);
成功了。谢谢!
我正在创建一个递归过程以将 csv 数据导入 table。我似乎无法使用 pgsql 函数将我需要插入的变量动态插入到我的 http 请求中。
我正在尝试使用带有执行格式和动态 sql 的 %L 插入变量 'insert_var'。当我看到函数传递的 link 时,它说的是“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;
行中的撇号看起来很乱
EXECUTE format('COPY temp_table (var1, var2)
FROM PROGRAM 'wget -q -O - "http://website/Data?variable=%L&Type=0"' WITH (CSV), r1.insert_var);
您可以使用自定义字符串分隔符:
EXECUTE format($x$COPY temp_table (var1, var2)
FROM PROGRAM 'wget -q -O - "http://website/Data?variable=%L&Type=0"' WITH (CSV)$x$, r1.insert_var);
我在 Pavel 的帮助下弄明白了!
EXECUTE format($x$COPY temp_table (var1, var2)
FROM PROGRAM 'wget -q -O - "http://website/Data?variable=%I&Type=0"' WITH (FORMAT CSV)$x$, r1.insert_var);
成功了。谢谢!