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

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

Автору,
Ваш проект завязан на каких-то нестандартных фишках MS-SQL, и при этом вы заявляете, что отказаться от них "неприемлимо". Я вижу такие варианты:
1) Пересмотреть исходный проект в пользу отказа от не стандартных фишек
2) Пересмотреть идею смены БД
3) Прочитать мануал по PostgreSQL. PostgreSQL отлично работает с пользовательскими типами данных, наверняка у вас получиться создать тип sqlvariant :) Только в этом случае, если через год вы решите перейти на MySQL, возникнут те же вопросы. :)
...
Рейтинг: 0 / 0
25.01.2007, 14:43
    #34282147
mitix
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlvariant для postgres
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
25.01.2007, 15:41
    #34282461
Misha Tyurin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlvariant для postgres
А каким образом портировать собираетесь? Выгрузкой dml, его исполнением, и sql инсертами последующими? И как вы строили индексы по sql_variant?
...
Рейтинг: 0 / 0
25.01.2007, 15:42
    #34282470
Serik Akhmetov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlvariant для postgres
смотрим 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
25.01.2007, 19:11
    #34283315
СергейК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlvariant для postgres
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
Период между сообщениями больше года.
11.03.2015, 08:57
    #38900689
AndyKuvaldin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlvariant для postgres
Вопрос по SQLvariant и возможность обращения к системным таблицам был решён или нет? Появилась аналогичная задача...
...
Рейтинг: 0 / 0
11.03.2015, 09:21
    #38900714
rovan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlvariant для postgres
AndyKuvaldin, формулировка - ну очень порадовала.
SqlVariant, насколько знаю, так и не появился (что не может не радовать).
А вот это
AndyKuvaldinвозможность обращения к системным таблицам
Какой доступ, к каким таблицам, какие данные пытаешься вытянуть?
...
Рейтинг: 0 / 0
11.03.2015, 09:37
    #38900739
AndyKuvaldin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sqlvariant для postgres
rovanAndyKuvaldin, формулировка - ну очень порадовала.
SqlVariant, насколько знаю, так и не появился (что не может не радовать).
А вот это
AndyKuvaldinвозможность обращения к системным таблицам
Какой доступ, к каким таблицам, какие данные пытаешься вытянуть?

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


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