|
Запрос SQL | ☑ | ||
---|---|---|---|---|
0
ученик_0117
17.05.12
✎
10:46
|
День добрый!Сразу к делу:существует бд,клиент уплавления IB expert, около 800 таблиц.Задача проверить таблицы на наличие данных(т.е открыть каждую табличку ручками и посмотреть есть данные или нет) можно этот процесс автоматизировать?
|
|||
1
Господин ПЖ
17.05.12
✎
10:47
|
разрешаю накорябать скрипт
|
|||
2
Азат
17.05.12
✎
10:48
|
не возражаю, согласовано
|
|||
3
ученик_0117
17.05.12
✎
10:50
|
(1)каким образом?
(2)каким образом? |
|||
4
Кроха
17.05.12
✎
10:52
|
transact sql Тебе в помощь
|
|||
5
Ёпрст
17.05.12
✎
10:53
|
(3) скриптом обойти все таблички и посмотреть select count() в них
|
|||
6
ученик_0117
17.05.12
✎
10:54
|
как я понимаю если знаешь то ничего сложного?
|
|||
7
badboychik
17.05.12
✎
10:58
|
(4) это не MS SQL Server. IB Expert вроде как работает с Firebird
|
|||
8
badboychik
17.05.12
✎
11:00
|
а в фаерберде есть системная таблица с именами всех обычных таблиц. Можно написать скрипт который выберет их имена и в цикле обойдет и посчитает во всех Count()
|
|||
9
ученик_0117
17.05.12
✎
11:00
|
(7) я очень плохо разбираюсь с этим...тут просто ситуация очень итересная у меня сложилась.
|
|||
10
ЧеловекДуши
17.05.12
✎
11:00
|
(7) Вот сайт www.google.ru он многое знает :)
|
|||
11
ЧеловекДуши
17.05.12
✎
11:01
|
(9) Что значит я не я, а деньги мои.
Если хочешь ЗП, то работай, учись, познавай мир ИТ :) |
|||
12
ученик_0117
17.05.12
✎
11:01
|
(10) уже там
|
|||
13
ученик_0117
17.05.12
✎
11:02
|
(11) вот познаю..."молодым везде дорогу"
|
|||
14
badboychik
17.05.12
✎
11:03
|
вроде бы есть какой то пункт во многих программах для СУБД - вывести объем таблиц в МБ и строках. Потыкай и обрящешь
|
|||
15
ЧеловекДуши
17.05.12
✎
11:03
|
(12)Ты пойми, если ты из 800 таблиц не вкурсе для чего они, то веся твоя автоматизация сведется к одному: "Получить список таблиц с данными"
И все, по большей части ты даже не поймешь, что чем является, если автор БД не называл таблицы по умному, но я бы ожидал увидеть там типо: "Табл00002" и т.д. |
|||
16
ЧеловекДуши
17.05.12
✎
11:04
|
+ Лучше начни с той программой, которая работала с этой БД.
|
|||
17
ЧеловекДуши
17.05.12
✎
11:07
|
+ Если ты под IB expert - понимаешь Интер Байзес, то там в одном файле может содержаться несколько БД. :)
|
|||
18
ученик_0117
17.05.12
✎
11:09
|
бд строил не я...лучше не пытатся написать скрипт?ручками открывать каждую табличку,щелкать по "данным" если поля не пусты то "+",если пусто "-".
|
|||
19
badboychik
17.05.12
✎
11:09
|
Если человек не знает какая у него СУБД, вряд ли он напишет скрипт под нее
|
|||
20
ученик_0117
17.05.12
✎
11:28
|
а может есть какой шаблон для данной операции?
|
|||
21
Кроха
17.05.12
✎
11:29
|
||||
22
ученик_0117
17.05.12
✎
12:49
|
спасибо....всем!!!!
|
|||
23
Ненавижу 1С
гуру
17.05.12
✎
12:55
|
список всех таблиц
SELECT rdb$relation_name FROM rdb$relations WHERE rdb$view_blr IS NULL AND rdb$system_flag <> 1 |
|||
24
ЧеловекДуши
17.05.12
✎
12:59
|
(23)А как получить список все заполненных таблиц?
|
|||
25
Ёпрст
17.05.12
✎
13:01
|
(24) самое тупое, посмотреть size в этой табличке
|
|||
26
774816
17.05.12
✎
13:09
|
Как вариант можно, через ADOX + ADODB.Recordset, в цикле списка имен таблиц, формировать запрос с Count(*) передавать Recordset-у и возвращать значение для проверки
|
|||
27
ученик_0117
17.05.12
✎
13:14
|
(23)стесняюсь спросить а как передать имена всех таблиц?
|
|||
28
slowpoke1C
17.05.12
✎
13:14
|
Вот с айбэйза: ibase.ru
читать сначала http://ibase.ru/devinfo/sysqry.htm потом http://citforum.ru/database/interbase/index.shtml Получение списка полей и их типов по таблицам: select R.RDB$RELATION_NAME, R.RDB$FIELD_POSITION, R.RDB$FIELD_NAME, F.RDB$FIELD_LENGTH, F.RDB$FIELD_TYPE, F.RDB$FIELD_SCALE, F.RDB$FIELD_SUB_TYPE from RDB$FIELDS F, RDB$RELATION_FIELDS R where F.RDB$FIELD_NAME = R.RDB$FIELD_SOURCE and R.RDB$SYSTEM_FLAG = 0 order by R.RDB$RELATION_NAME, R.RDB$FIELD_POSITION Если вам не нравится нумерация полей с 0, то можно вместо R.RDB$FIELD_POSITION написать R.RDB$FIELD_POSITION+1. Для получения списка полей конкретной таблицы нужно добавить соответствующее условие к where - and RDB$RELATION_NAME = 'MYTABLE'. |
|||
29
slowpoke1C
17.05.12
✎
13:15
|
(23) опять меня опередили :-(
|
|||
30
Ненавижу 1С
гуру
17.05.12
✎
13:17
|
CREATE OR ALTER PROCEDURE MYPROC
returns (Name Char(31)) AS declare variable C Integer; declare variable S Varchar(100); begin FOR SELECT rdb$relation_name FROM rdb$relations WHERE rdb$view_blr IS NULL AND rdb$system_flag <> 1 INTO :Name DO BEGIN S = 'select count(*) from '||:Name; EXECUTE STATEMENT :S INTO :C; IF (:C>0) THEN BEGIN SUSPEND; END END end SELECT * FROM MYPROC |
|||
31
ученик_0117
17.05.12
✎
13:46
|
execute block returns (empty_table varchar(31)) as
declare v_cnt smallint; declare v_sql varchar(255); begin for select r.rdb$relation_name from rdb$relations r where coalesce(r.rdb$system_flag,0)=0 -- не смотрим на системные таблицы and r.rdb$relation_type not in(4,5) -- убираем GTT'шки and r.rdb$view_source is null -- убираем вьюхи into empty_table do begin v_sql='select count(*) from (select first 1 * from '||empty_table||')'; execute statement (v_sql) into :v_cnt; if (v_cnt=0) then suspend; end end. а как сделать чтоб сохранялись в txt или как нить еще? |
|||
32
Ненавижу 1С
гуру
17.05.12
✎
13:48
|
(31) ну это уже от приложения зависит
неужели нет возможности никак сохранить? |
|||
33
ученик_0117
17.05.12
✎
13:49
|
(32) а если вписать save as и путь дериктории?
|
|||
34
ЧеловекДуши
17.05.12
✎
13:55
|
(33)Напиши лучше через делфятину, там еще пропишешь, как и куда сохранить те или иные таблицы :)
|
|||
35
ученик_0117
18.05.12
✎
07:47
|
спасибо всем кто откликнулся.....
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |