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