a_horse_with_no_name является правильным.
В PostgreSQL имена без кавычек нечувствительны к регистру. Таким образом, SELECT * FROM hello
и SELECT * FROM HELLO
эквивалентны.
Однако цитируемые имена чувствительны к регистру. SELECT * FROM "hello"
- , а не , эквивалентный SELECT * FROM "HELLO"
.
Чтобы создать «мост» между цитируемыми именами и именами без кавычек, неупомянутые имена неявно ограничены, таким образом hello
, HELLO
и HeLLo
эквивалентны "hello"
, но не "HELLO"
или "HeLLo"
(OOPS!).
Таким образом, при создании объектов (таблицы, представления, процедуры и т. д.) в PostgreSQL, вы должны указать их как без кавычек, так и с кавычками, но с нижним.
Чтобы преобразовать существующие таблицы / представления / etc, вы можете использовать что-то вроде ALTER TABLE "FOO" RENAME TO "foo"
.
Или попробуйте изменить дамп из MSSQL, чтобы сделать его «совместимым с PostgreSQL» (чтобы он содержал foo
s или "foo"
s, но не "FOO"
s).
sed -r 's/"[^"]+"/\L\0/g' dumpfile
- однако следует предупредить, что эта команда также может изменять текст в строковых литералах.)