Мужики, а есть ли в природе фильтр для SQL, который по запросам на чтение
создаёт структуру базу и таблицы?Например USE superdb заменить на IF NOT EXIST 'superdb' CREATE DATABASE superdb;
SELECT ля-ля-ля, ды-ды-ды FROM secrettable;
CREATE TABLE secrettable (ля-ля-ля, ды-ды-ды );...и только потом отработать SELECT
> Мужики, а есть ли в природе фильтр для SQL, который по запросам
> на чтение
> создаёт структуру базу и таблицы?
> Например USE superdb заменить на IF NOT EXIST 'superdb' CREATE DATABASE superdb;
> SELECT ля-ля-ля, ды-ды-ды FROM secrettable;
> CREATE TABLE secrettable (ля-ля-ля, ды-ды-ды );
> ...и только потом отработать SELECTпавлин отсыпь травы не жмись
мелкомягкий sql2008 умеет
IF (NOT EXIST (SELECT 100г FROM поллитра))
BEGIN
наливай
END
ELSE
BEGIN
неси закусь
ENDв мускуле такого нет, в постгре не помню
>[оверквотинг удален]
> павлин отсыпь травы не жмись
> мелкомягкий sql2008 умеет
> IF (NOT EXIST (SELECT 100г FROM поллитра))
> BEGIN
> наливай
> END
> ELSE
> BEGIN
> неси закусь
> ENDИ куда этот код сувать?
---Во, тока сцука интерактивное http://sqlfiddle.com
> Мужики, а есть ли в природе фильтр для SQL, который по запросам
> на чтение создаёт структуру базу и таблицы?В общем-то легко, только делай select не таблицы, а своей функции, которая проверит и насобачит что угодно. Другой вопрос - а нафига это нужно?
Как отслеживать версии структуры таблицы - непонятно. Запихать в свою функцию deployment, version control, replicaiton и прочую функциональность можно, но как-то стыдно.
Смотри в сторону Puppet и подобных, чтобы не выяснять, есть ли база, а иметь гарантию, что приложение запущено только после того, как
- оно установлено
- база создана
- таблицы созданы
- права розданы
- версии приложения, базы и таблиц совпадаютТолько это всё равно геморно - слишком много дописывать руками. А Puppet - кривое уё*ще.
>> Мужики, а есть ли в природе фильтр для SQL, который по запросам
>> на чтение создаёт структуру базу и таблицы?
> В общем-то легко, только делай select не таблицы, а своей функции, которая
> проверит и насобачит что угодно. Другой вопрос - а нафига это
> нужно?Есть блоб, хочет базу, юзер/пароль отловил, структуру базы саипусь реконструировать.
А чо удивительного? Обычный хак методом "Подсунь программе, что она просит"
> Есть блоб, хочет базу, юзер/пароль отловил, структуру базы саипусь реконструировать.1. Все ли запросы к базе известны?
2. Нет ли среди запросов вызовов процедур?
3. Нет ли в запросах вызовов юзерских функций?
4. Достоверно ли известно отсутствие в базе триггеров и ивентов?Пробой по любому из пунктов делает задачу нерешаемой. Ну, то-есть, то, что можно сделать в таких условиях решением назвать не представляется возможным.
>>> Мужики, а есть ли в природе фильтр для SQL, который по запросам
>>> на чтение создаёт структуру базу и таблицы?
>> В общем-то легко, только делай select не таблицы, а своей функции, которая
>> проверит и насобачит что угодно. Другой вопрос - а нафига это
>> нужно?
> Есть блоб, хочет базу, юзер/пароль отловил, структуру базы саипусь реконструировать.
> А чо удивительного? Обычный хак методом "Подсунь программе, что она просит"а выдрать запросы из исполняемого файла никак нельзя?
поиск по файлу все строк с ключевыми словами select/insert/update/where
> Есть блоб, хочет базу, юзер/пароль отловил, структуру базы саипусь реконструировать.Включи текстовый лог в SQL сервере, лови SELECT'ы каким-нибудь Perl'ом, создавай через DBI чего не хватает.
Остаётся, правда, вопрос про типы колонок - в запросах они явно не появляются.
Не знаю, как этот блоб, а у меня весь софт сначала читает структуру базы на предмет отслеживания изменений. А поведение некоторых алгоритмов зависит от нарытых индексов. Если в блобе применён какой-нибудь ORM - ожидай подобных граблей.
>... каким-нибудь Perl'ом, создавай через DBI чего не хватает.Вооот, вопрос в том и был - Есть ли что-то готовое?
Потому как запил своих плюшек не окупается.
> В общем-то легко, только .......
> а нафига это нужно?ACCA ты перед тем как отвечать точно вопрос читал?