Это старый вопрос. Я только возвращаюсь, чтобы предложить другой ответ. Примечание: другие лучшие ответы уже существуют, это только для образовательных целей .
Самый простой способ - это делать то, что говорили другие; выполнить CREATE TABLE, если вы хотите сохранить существующие данные, или выполнить DROP IF EXISTS, а затем CREATE TABLE, если вы хотите только что созданную таблицу.
Другая альтернатива - запросить системную таблицу на предмет ее существования и перейти оттуда.
SELECT true FROM pg_tables WHERE tablename = <table> [AND schemaname = <schema>];
Используется:
-- schema independent:
SELECT true FROM pg_tables WHERE tablename = 'foo';
-- schema dependent:
SELECT true FROM pg_tables WHERE tablename = 'foo' AND schemaname = 'bar';
Если он совпадает, у вас будет истинное значение, в противном случае он должен вернуть пустой набор данных. Вы можете использовать это значение, чтобы определить, нужно ли вам выполнить команду CREATE TABLE.