Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Перекинуть из одной таблицы в другую


Автор: mspuz 21.12.2005, 14:05
Всем привет. Проблема в следующем. Кто-то удалил часть данных из жизненно важной таблицы, но имеется резервная копия - достаем её, select'ом выбираем нужную часть данных и.....А дальше то что делать??? Таблицы находятся в разных БД, структура таблиц совершенно одинаковая и самое главное в таблице 100!!!!! полей. Как мне, не перечисляя названия всех полей перекинуть все это из одной таблицы в другую. Я уже сделал, тупейшим способом (т.к. надо было это сделать быстро, а других методов я не знал), но мучиться когда-нить еще раз так же не охота. smile
Добавлено @ 14:09
Копался в литературе и наткнулся на такую штуку - компонент IBSQL и методы BatchOutput и BatchInput. Но как я понял из хелпа мне все равно нужно указывать весь список полей и передавать значение всех полей в параметры. Может я не так понял??? Может это как раз то, что нужно ????

Автор: offline 21.12.2005, 14:17
Код

INSERT INTO Table1 (Field1, Field2, Field3 ... )
SELECT Field1, Field2, Field3 ... FROM Table2

Автор: Susel 21.12.2005, 14:25
INSERT INTO Table1 SELECT * FROM Table2

Автор: mspuz 21.12.2005, 15:16
Susel А если они в разных БД, то как строка запроса будет выглядить???

Автор: offline 21.12.2005, 15:20
какая разница где они подключаешь к ADOTable1 (Table1) первую таблицу - куда, к ADOTable2 (Table12) вторую таблицу - откуда и вперед

Автор: mspuz 21.12.2005, 15:40
kirilllius Я извиняюсь за свои неисправные тормоза, но...разве Table поддерживает SQL-запросы??? Или подключить таблицы к Table, а запросы творить через Query, указывая вместо названия таблиц названия компонентов???

Автор: offline 21.12.2005, 15:59
нет, это у меня сегодня тяжелый день smile

Код

SELECT *
INTO Таблица2 IN 'D:\Projeck\1.mdb'
FROM Таблица1


где Таблица1 - это таблица из текущей базы, а Таблица2 - это таблтца из другой базы D:\Projeck\1.mdb

Автор: Susel 21.12.2005, 17:50
Хм....я и не думал даже что в IB так сложно составить запрос к таблицам из 2-х БД.......
В других СУБД это совсем не проблема.......

Ну как ещё один из вариантов - воспользоваться утилиткой Copy в Database Desktop.....
Хотя если вариант предложенный kirilllius работает - то он будет получше......

Автор: offline 21.12.2005, 17:55
в Access по крайней мере работает, а в IB не знаю

Автор: Susel 21.12.2005, 20:48
Хех...:-) В Информиксе работает: INSERT INTO Table1 SELECT * FROM Database@Table2, но это же не факт, что для IB работает....

Автор: YurikGL 21.12.2005, 21:49
А не судьба в той базе, которая станет итоговой, создать временную таблицу, перекинуть туда все из копии и после этого выполнить запрос?
Или вообще по одной записи в цикле перебрать и перекинуть?

Цитата
Как мне, не перечисляя названия всех полей перекинуть все это из одной таблицы в другую.

что-то типа
for i:=0 to table1.fields.count-1 do
table1.fields[i].value:=table2.fields[i].value

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)