Здравствуйте,
может кто-нибудь подсказать в чем моя ошибка при выполнении следующих действий:
Необходимо добавить комментарии, на русском, к автоматически создаваемым таблицам в постгрессе.
То есть когда в PgAdmin раскрывается список
“Servers\Databases\имя моей базы \Schemas\ имя моей схемы \” и выделяется список созданных таблиц, то что бы у каждой таблицы в списке «Table, Owner, Comment» был комментарий на русском языке. И когда выделяешь определенную таблицу, то что бы у каждого столбца был комментарий на русском языке. (Комментарии на английском получаются и все хорошо)
Пытаюсь выполнить это создание комментариев следующим образом
запускаю cmd файл с вот такими записями
chcp 1251 SET PGPASSWORD=user1234 pause "c:\Program Files\PostgreSQL\9.3\bin\psql.exe" -U postgres --no-password -f settings11.sql pause
где код settings11.sql
--Creating Role CREATE ROLE FMBZ_user WITH LOGIN PASSWORD 'FMBZ_user' SUPERUSER CREATEDB CREATEROLE; UPDATE pg_authid SET rolcatupdate=false WHERE rolname='FMBZ_user'; --Creating DB CREATE DATABASE "FMBZ_Base" WITH ENCODING='UTF8' OWNER=FMBZ_user TABLESPACE = DEFAULT; SET client_encoding=win866; SET SESSION ROLE FMBZ_user; SET SESSION AUTHORIZATION FMBZ_user; \connect FMBZ_Base; CREATE SCHEMA FMBZ_schema AUTHORIZATION FMBZ_user; CREATE TABLE FMBZ_schema.Table_AccountFIO ( id SERIAL NOT NULL, id_AccountIdentifier numeric CONSTRAINT firstkey PRIMARY KEY, id_LastName text, id_FirstName text, id_MiddleName text, id_BirthDay text ); ALTER TABLE FMBZ_schema.Table_AccountFIO OWNER TO FMBZ_user; COMMENT ON TABLE fmbz_schema.table_accountfio IS 'мамам';
Сам sql файл в нотепад++
Если sql файл в кодировке win1251
в комментариях к таблице “АРАБСКАЯ ВЯЗЬ” то есть кракозябры.
Если sql файл в кодировке UTF8 то,
происходит ошибка
psql:settings11.sql:46: ERROR: character with byte sequence 0x8f in encoding "W
IN1252" has no equivalent in encoding "UTF8"
хотя создается база, схема и таблица со столбцами, но без коментов
Еще раз (только сильно не бейте):
Как добавить комментарии, на русском, к автоматически создаваемым таблицам в постгрессе?
На мой взгляд ошибка в том,
На мой взгляд ошибка в том, что вы говорите:
SET client_encoding=win866;
а кодировка при этом винюковая. Сделайте уж как положено.
Если у вас БД в UTF-8, то либо установить перавильный client_encoding либо скармливайте базе текст тоже в UTF-8.
комментарии на русском теперь
комментарии на русском теперь вставляются
SQL файлы написаны в нотепад++ в кодировке UTF8 without BOM
--------------------------------------------------------prepareDB3.cmd---------------------------------------------------------------
chcp 1251
SET PGPASSWORD=bars1234
"c:\Program Files\PostgreSQL\9.3\bin\psql.exe" -U postgres --no-password -f settings30.sql
pause
--------------------------------------------------------prepareDB4.cmd---------------------------------------------------------------
chcp 1251
"c:\Program Files\PostgreSQL\9.3\bin\psql.exe" --dbname FMBZ_Base --username fmbz_user -f settings31.sql
pause
--------------------------------------------------------settings30.sql---------------------------------------------------------------
--Creating Role
SET client_encoding = 'UTF8';
DROP ROLE IF EXISTS FMBZ_user;
CREATE ROLE FMBZ_user WITH LOGIN PASSWORD 'FMBZ_user' SUPERUSER CREATEDB CREATEROLE;
UPDATE pg_authid SET rolcatupdate=false WHERE rolname='FMBZ_user';
COMMENT ON ROLE fmbz_user IS 'мама';
CREATE DATABASE "FMBZ_Base"
WITH OWNER=FMBZ_user ENCODING='UTF8' TABLESPACE = DEFAULT;
COMMENT ON DATABASE "FMBZ_Base" IS 'папа и молоко и черный';
--------------------------------------------------------settings31.sql---------------------------------------------------------------
--Creating Role
SET client_encoding = 'UTF8';
CREATE SCHEMA FMBZ_user AUTHORIZATION FMBZ_user;
COMMENT ON SCHEMA FMBZ_user IS 'молоко';
CREATE TABLE FMBZ_user.Table_AccountFIO (
id SERIAL NOT NULL,
id_AccountIdentifier numeric CONSTRAINT firstkey PRIMARY KEY,
id_LastName text
);
ALTER TABLE FMBZ_user.Table_AccountFIO OWNER TO FMBZ_user;
COMMENT ON TABLE FMBZ_user.Table_AccountFIO IS 'чай';
COMMENT ON COLUMN fmbz_user.table_accountfio.id_lastname IS 'водка';