我正在尝试创建包含“Messdaten”字样的表格。没有〜“Messdaten”部分,代码运行良好,但每当我添加〜“Messdaten”时它抛出SQL State:42601 sytax错误。你知道代码有什么问题吗?它的postgresql 9.2。
DECLARE
tbl_arr varchar[] := array['Messdaten2','dumptable'];
i varchar;
BEGIN
FOREACH i IN Array tbl_arr
LOOP
EXECUTE format('CREATE TABLE %I AS SELECT * FROM %I ~ "Messdaten"','backup_'||i,i);
END LOOP;
END;
答案 0 :(得分:1)
代码正在尝试这样做:
CREATE TABLE Messdaten2 AS SELECT * FROM Messdaten2 ~ "Messdaten"
这是不正确的,因为Messadaten2是表名而不是表达式的成员。
相反,将正则表达式检查放在format
函数的第一个参数字符串之外:
IF i ~ 'Messdaten' THEN -- Do the regular expresssion test here
EXECUTE format('CREATE TABLE %I AS SELECT * FROM %I','backup_'||i,i);
END IF;