Postgresql 从SQL查询中删除括号
我正在修补另一个SO问题中重新使用的SQL片段:Postgresql 从SQL查询中删除括号,postgresql,Postgresql,我正在修补另一个SO问题中重新使用的SQL片段: CREATE OR REPLACE FUNCTION db_to_csv(path TEXT) RETURNS void AS $$ DECLARE target RECORD; statement TEXT; BEGIN FOR target IN SELECT DISTINCT table_name FROM information_schema.columns WHERE table_schema='pu
CREATE OR REPLACE FUNCTION db_to_csv(path TEXT) RETURNS void AS $$
DECLARE
target RECORD;
statement TEXT;
BEGIN
FOR target IN
SELECT DISTINCT table_name
FROM information_schema.columns
WHERE table_schema='public'
AND position('_' in table_name) <> 1
ORDER BY 1
LOOP
statement := 'COPY '
|| target
|| ' TO '''
|| path
|| '/'
|| target
|| '.csv'
||''' DELIMITER '';'' CSV HEADER';
EXECUTE statement;
END LOOP;
return;
end;
$$ LANGUAGE plpgsql;
…而我希望该声明如下所示:
COPY Bok_F_Acc TO '/Users/jgt/dir/Bok_F_Acc.csv' DELIMIT...
我怎样才能去掉那些括号
SELECT QUOTE_IDENT(TRIM(BOTH '()' FROM target));
请注意,这将删除任意数量的前/后括号。要最多删除其中一个,您可以使用:
SELECT QUOTE_IDENT(REGEXP_REPLACE(target, E'\^\\(|\\)\$', '', 'g'));
1)
format()
2)quote_ident()
3)利润从信息模式中选择不同的表名称。列
如果您只对表名称感兴趣,您可以从信息模式中选择,其中表模式='public'和表类型='BASE table'
,并省略不同的(并限制为'BASE table',和/或改用pg_catalog.pg类。
SELECT QUOTE_IDENT(REGEXP_REPLACE(target, E'\^\\(|\\)\$', '', 'g'));