Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / ?create table t1 as select * from t2 where 1=2 / 12 сообщений из 12, страница 1 из 1
27.02.2006, 18:02
    #33568791
Dimka08
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?create table t1 as select * from t2 where 1=2
возможно ли реализовать чтото подобное?
...
Рейтинг: 0 / 0
27.02.2006, 19:04
    #33568949
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?create table t1 as select * from t2 where 1=2
Dimka08возможно ли реализовать чтото подобное?
нужна именно постоянная таблица?
Если нет, то для временной
Код: plaintext
select * from t2 where  1 = 2  into temp t1 [WITH NO LOG];
Для полстоянной в IDS 7.31 только с привлечением :
1) Что-то для получения скрипта существующей таблицы - dbschema, eSQLEditor, SQL Explorer, свой скрипт/ХП по сиситемнім таблицам :)
2) Что-то для запуска этого скрипта - dbaccess, eSQLEditor, SQL Explorer, своя программа :)
3) Извраты через
Код: plaintext
system
не рассматривал :)
...
Рейтинг: 0 / 0
28.02.2006, 08:43
    #33569568
zefs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?create table t1 as select * from t2 where 1=2
Dimka08возможно ли реализовать чтото подобное?

Почему не
create view t1 as select * from t2 where 1=2

и вообще, опишите проблему подробнее!!!
...
Рейтинг: 0 / 0
28.02.2006, 09:43
    #33569696
Владимор Конев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?create table t1 as select * from t2 where 1=2
Подозреваю, что человеку просто нужно сделать дубликат таблицы (сотворить ещё одну таблицу, которая будет иметь тот же состав полей и поля будут иметь тот тип данных, что и в исходной таблице).

Сдается мне, товарищ пришел из Oracle. Там такое работает на ура...
...
Рейтинг: 0 / 0
28.02.2006, 09:44
    #33569701
Владимор Конев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?create table t1 as select * from t2 where 1=2
Владимор КоневПодозреваю, что человеку просто нужно сделать дубликат таблицы (сотворить ещё одну таблицу, которая будет иметь тот же состав полей и поля будут иметь тот тип данных, что и в исходной таблице).

Сдается мне, товарищ пришел из Oracle. Там такое работает на ура...Мой предыдущей ответ в большей степени адресовался Зефсу, чем автору топика.
...
Рейтинг: 0 / 0
28.02.2006, 09:52
    #33569733
Dimka08
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?create table t1 as select * from t2 where 1=2
Владимор КоневПодозреваю, что человеку просто нужно сделать дубликат таблицы (сотворить ещё одну таблицу, которая будет иметь тот же состав полей и поля будут иметь тот тип данных, что и в исходной таблице).

Сдается мне, товарищ пришел из Oracle. Там такое работает на ура...
сокращенный дубликат +одно вычисляемое поле
нужна нормальная таблица не темповая и не вью
...
Рейтинг: 0 / 0
28.02.2006, 12:28
    #33570349
Daugava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?create table t1 as select * from t2 where 1=2
Не пойму зачем это надо. Явная попытка решить задачу через ж.... Сомневаюсь, что это регулярная операция, требующая автоматизациия и предназначеня для выполнения юзерами. Самый простой способ для выполнения администратором, если в таблице много полей:
1. dbschema -d database -t t2 oldtable.sql
2. Добавляем новое поле в oldtable.sql и создаем новую таблицу.
3. Переносим записи из t2 в новую таблицу. В зависимости от количества записей разными способами, дабы не упереться в Long Transaction.
...
Рейтинг: 0 / 0
28.02.2006, 12:51
    #33570453
Dimka08
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?create table t1 as select * from t2 where 1=2
DaugavaНе пойму зачем это надо. Явная попытка решить задачу через ж.... Сомневаюсь, что это регулярная операция, требующая автоматизациия и предназначеня для выполнения юзерами. Самый простой способ для выполнения администратором, если в таблице много полей:
1. dbschema -d database -t t2 oldtable.sql
2. Добавляем новое поле в oldtable.sql и создаем новую таблицу.
3. Переносим записи из t2 в новую таблицу. В зависимости от количества записей разными способами, дабы не упереться в Long Transaction.
напрмер есть 100 таблиц надо создать 100 аналогичных но без некоторых полей
+ если есть определенное поле то его надо заменить на другое
+ во все таблицы добавить поле
конечно можно все перенести и вручную
...
Рейтинг: 0 / 0
28.02.2006, 12:53
    #33570462
Dimka08
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?create table t1 as select * from t2 where 1=2
Daugava3. Переносим записи из t2 в новую таблицу. В зависимости от количества записей разными способами, дабы не упереться в Long Transaction.
и еще вопрос если надо перенести например 100-500к записей
из одной таблицы в другую как это лучще сделать
одним инсертом или в цикле
...
Рейтинг: 0 / 0
28.02.2006, 17:08
    #33571550
Daugava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?create table t1 as select * from t2 where 1=2
Еще раз, раскажите мне задачу, в которой хотя бы ежедневно требуется из 100 таблиц создавать 100 аналогичных без нескольких полей.
Реализуемо сие через dbschema - парсинг скриптом. Можно также реализовать и на SQL (но это значительно более геморройно, если не найти готовых экзампл, собирающий по системным таблицам структуру), который потом выполнить через DATABLADE.
На счет как закачивать, тоже вопрос. Все зависит от вашей системы, для кого-то 1000 записей много, для кого-то ежеминутные закачки по 10000 в порядке вещей.
...
Рейтинг: 0 / 0
28.02.2006, 17:16
    #33571586
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?create table t1 as select * from t2 where 1=2
Dimka08 DaugavaНе пойму зачем это надо. Явная попытка решить задачу через ж.... Сомневаюсь, что это регулярная операция, требующая автоматизациия и предназначеня для выполнения юзерами. Самый простой способ для выполнения администратором, если в таблице много полей:
1. dbschema -d database -t t2 oldtable.sql
2. Добавляем новое поле в oldtable.sql и создаем новую таблицу.
3. Переносим записи из t2 в новую таблицу. В зависимости от количества записей разными способами, дабы не упереться в Long Transaction.
напрмер есть 100 таблиц надо создать 100 аналогичных но без некоторых полей
+ если есть определенное поле то его надо заменить на другое
+ во все таблицы добавить поле
Убедились, что операция разовая :)
Для удобства работы и автодокументирования существуют замечательные CASE-средства "типа ERwin", с возможностью реинжиниринга и модификации схемы.
Или использовать уже предложенный вариант работы с чистым SQL-скриптом, формируемым утилитой dbschema и тривиальной операцией "поиск-замена".
...
Рейтинг: 0 / 0
28.02.2006, 17:21
    #33571600
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?create table t1 as select * from t2 where 1=2
Dimka08 Daugava3. Переносим записи из t2 в новую таблицу. В зависимости от количества записей разными способами, дабы не упереться в Long Transaction.
и еще вопрос если надо перенести например 100-500к записей
из одной таблицы в другую как это лучще сделать
одним инсертом или в цикле
Если уже упомянутое понятие Long Transaction для вас незнакомо, то в цикле с транзакциями (т.е. блок записей - коммит транзакции). Если знаете, как расширить размер логических журналов до нужного размера - можно одним инсертом. Можно почитать FAQ http://www.sql.ru/faq/faq.aspx?id=585 (первые два вопроса) на тему специализированных средств и способов по миграции больших объемов данных.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / ?create table t1 as select * from t2 where 1=2 / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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