powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / sqlvariant для postgres
12 сообщений из 12, страница 1 из 1
sqlvariant для postgres
    #34281424
mitix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте уважаемые посетители sql.ru!
Мне надо портировать проект завязанный на mssql2000 на postgresql. Все бы ничего, но есть одна проблема, очень много данных типа sqlvariant. Сразу скажу, что данные хранить в разных таблицах по типам в этом проекте неприемлимо.
Итак, как мне получить тип sqlvariant для постгреса? Насколько я понял, родной поддержки этого типа нет. Возможно ли такое вообще? Может кто сталкивался? Или хотябы в какую сторону копать? Только не пинайте сильно, у меня пока ещё мало опыта с sql :)
Заранее большое спасибо!
...
Рейтинг: 0 / 0
sqlvariant для postgres
    #34281776
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что это такое "sqlvariant" и что такое "данные хранить в разных таблицах по типам в этом проекте неприемлимо"?

Есть вот такое в пг, но не знаю, про Вас это или нет: http://www.postgresql.org/docs/8.2/interactive/datatype-pseudo.html .
...
Рейтинг: 0 / 0
sqlvariant для postgres
    #34282029
Serik Akhmetov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Misha Tyurin Что это такое "sqlvariant" и что такое "данные хранить в разных таблицах по типам в этом проекте неприемлимо"?Я меня тоже возникли эти вопросы :)

Автору,
Ваш проект завязан на каких-то нестандартных фишках MS-SQL, и при этом вы заявляете, что отказаться от них "неприемлимо". Я вижу такие варианты:
1) Пересмотреть исходный проект в пользу отказа от не стандартных фишек
2) Пересмотреть идею смены БД
3) Прочитать мануал по PostgreSQL. PostgreSQL отлично работает с пользовательскими типами данных, наверняка у вас получиться создать тип sqlvariant :) Только в этом случае, если через год вы решите перейти на MySQL, возникнут те же вопросы. :)
...
Рейтинг: 0 / 0
sqlvariant для postgres
    #34282147
mitix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Misha Tyurin:
Прошу прощения, немного некорректно назвал этот тип, в mssql он назывется sql_variant. Если объявить поле такого типа, то в такое поле можно будет записать значения типа int, decimal, char, binary или nchar.
Имеется одна большая таблица, первое поле - суррогатный PK, второе поле - как раз sql_variant, то есть в ней лежат данные разных типов. Как выход можно было бы int'ы - в отдельную таблицу, char'ы - в отдельную и.т.д, но так пока неприемлемо.
Псевдотипы мне не подходят, потому что, как я понял нельзя обявить поле такого типа в таблице, а можно только использовать в качестве возвращаемого значения или параметра функции.

2Serik Akhmetov:
Проект по идее должен иметь поддержку нескольких СУБД (mssql, postgres, oracle, mysql в обозримом будущем не планируется), начато было все с mssql, неперь надо поддержку postgres, но этого треклятого sql_variant там нет :) По этим причинам "смены БД" как таковой нет, нужна и та и другая :) Про создание такого типа "вручную" (с помощью CREATE TYPE) я тоже думал, но как в таком случае быть с индексами? Табличка оооооооочень большая будет.
Я просто хочу выяснить есть ли в принципе возможность решения моей проблемы для pg не прибегая к системному программированию (патчингу pg).

Ещё раз спасибо заранее!
...
Рейтинг: 0 / 0
sqlvariant для postgres
    #34282461
Фотография Misha Tyurin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А каким образом портировать собираетесь? Выгрузкой dml, его исполнением, и sql инсертами последующими? И как вы строили индексы по sql_variant?
...
Рейтинг: 0 / 0
sqlvariant для postgres
    #34282470
Serik Akhmetov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смотрим http://www.postgresql.org/docs/8.2/interactive/rowtypes.html и пишем
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
CREATE TYPE sql_variant AS
   (i int4,
    d numeric,
    b bytea,
    t text
);
ALTER TYPE sql_variant OWNER TO postgres;

CREATE TABLE mytable
(
  id_mytable int4 NOT NULL, -- уникальный идентификатор
  val sql_variant,
  note varchar( 255 ),
CONSTRAINT pk_mytable PRIMARY KEY (id_mytable)
)
with oids;
ALTER TABLE mytable OWNER TO postgres;

для добавления
Код: plaintext
insert into mytable(id_mytable, val.t) values ( 4 ,'test message 3');
для чтения
Код: plaintext
select (val).i from mytable;

если определить операции сравнения, то думаю, можно и индекс построить.

Свое мнение по поводу проектирования с учетом переносимости и стандарта SQL оставлю при себе :)
...
Рейтинг: 0 / 0
sqlvariant для postgres
    #34283315
СергейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nu ia by lichno opredelil novyi C-y tip, 'a la' bytea I sdelal by 'cast'y int --> your_type, numeric --> your_type, bytea --> your_type .. i obratnye cast'y...
Ia dumayu eto optimalnyi put', no trebuet programmirovania na C in/out functsii i CAST'ov.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
sqlvariant для postgres
    #38900689
AndyKuvaldin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос по SQLvariant и возможность обращения к системным таблицам был решён или нет? Появилась аналогичная задача...
...
Рейтинг: 0 / 0
sqlvariant для postgres
    #38900714
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndyKuvaldin, формулировка - ну очень порадовала.
SqlVariant, насколько знаю, так и не появился (что не может не радовать).
А вот это
AndyKuvaldinвозможность обращения к системным таблицам
Какой доступ, к каким таблицам, какие данные пытаешься вытянуть?
...
Рейтинг: 0 / 0
sqlvariant для postgres
    #38900739
AndyKuvaldin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rovanAndyKuvaldin, формулировка - ну очень порадовала.
SqlVariant, насколько знаю, так и не появился (что не может не радовать).
А вот это
AndyKuvaldinвозможность обращения к системным таблицам
Какой доступ, к каким таблицам, какие данные пытаешься вытянуть?

Имена таблиц, наименование полей и индексы...
...
Рейтинг: 0 / 0
sqlvariant для postgres
    #38900756
rovan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndyKuvaldinИмена таблиц, наименование полей и индексы...
PG предоставляет возможность доступа к метаданным как через стандартную схему ( INFORMATION_SCHEMA ) так и через собственные таблицы метаданных.
Изучай.
...
Рейтинг: 0 / 0
sqlvariant для postgres
    #38900775
AndyKuvaldin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rovanAndyKuvaldinИмена таблиц, наименование полей и индексы...
PG предоставляет возможность доступа к метаданным как через стандартную схему ( INFORMATION_SCHEMA ) так и через собственные таблицы метаданных.
Изучай.
спасибо
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / sqlvariant для postgres
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]