L'échappement d'un guillemet simple en SQL (standard) se fait en utilisant deux guillemets simples, par exemple
'Peter''s house'
Je préfère utiliser l'explicite ARRAY[..]
qui a également besoin d'un guillemet de moins, donc votre insert pourrait être écrit comme :
INSERT into t1 (columnname)
VALUES (ARRAY['str1', 'str2''with quote symbol']);
Dans les versions antérieures à 9.1, Postgres était autorisé à utiliser \
comme caractère d'échappement alternatif, mais enregistrerait un avertissement s'il était utilisé. Depuis 9.1, le paramètre de configuration standard_conforming_strings
est activé et donc le \
ne peut pas être utilisé comme échappement d'un guillemet simple.