Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2016, 12:43   #1
anatoliy1992
Пользователь
 
Регистрация: 31.03.2015
Сообщений: 19
По умолчанию MS Access Пенренос таблицы из одной БД в другую - Delphi БД

Добрый день. Столкнулся с проблемой пересноса таблицы из одно БД в другую средствами ADO. сейчас это реализованно по записям. когда работаешь с 100 записями в таблице это проблем не вызывает но теперь есть необходимость обрабатывать по 100 тыс. записей и это явно не подходиткомп виснет минут на 20.
вот пример.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,gde:integer;  Filename,s:string;
begin
adoconnection2.Connected:=true;
adotable2.Open;
     OpenDialog1.Execute;
     Filename:=opendialog1.FileName;
     ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
         'Data Source='+filename+';Persist Security Info=False';
      ADOConnection1.Connected:=true;
      ADOTable1.TableName:='lgotniki_new';
      adotable1.Open;
Gde:=0;
 
{ÂñòГ*ГўГЄГ* Г§Г*ГЇГЁГ±ГЁ}
adotable2.Last;
adotable1.First;
for i:=0 to ADOTable1.RecordCount-1 do begin
        ADOTable2.Insert;
        ADOTable2.Fields[0].Value:=ADOTable1.Fields[0].Value;
        ADOTable2.Fields[1].Value:=ADOTable1.Fields[1].Value;
        ADOTable2.Fields[2].Value:=ADOTable1.Fields[2].Value;
        ADOTable2.Fields[3].Value:=ADOTable1.Fields[3].Value;
        ADOTable2.Fields[4].Value:=ADOTable1.Fields[4].Value;
        ADOTable2.Fields[5].Value:=ADOTable1.Fields[5].Value;
        ADOTable2.Fields[6].Value:=ADOTable1.Fields[6].Value;
        ADOTable2.Fields[7].Value:=ADOTable1.Fields[7].Value;
        ADOTable2.Fields[8].Value:=ADOTable1.Fields[8].Value;
        ADOTable2.Fields[9].Value:=ADOTable1.Fields[9].Value;
        ADOTable2.Fields[10].Value:=ADOTable1.Fields[10].Value;
        ADOTable2.Fields[11].Value:=ADOTable1.Fields[11].Value;
        ADOTable2.Fields[12].Value:=ADOTable1.Fields[12].Value;
        ADOTable2.Fields[13].Value:=ADOTable1.Fields[13].Value;
        ADOTable2.Fields[14].Value:=ADOTable1.Fields[14].Value;
        ADOTable2.Fields[15].Value:=ADOTable1.Fields[15].Value;
        ADOTable2.Fields[16].Value:=ADOTable1.Fields[16].Value;
        ADOTable2.Fields[17].Value:=ADOTable1.Fields[17].Value;
        ADOTable2.Fields[18].Value:=ADOTable1.Fields[18].Value;
        ADOTable2.Fields[19].Value:=ADOTable1.Fields[19].Value;
        ADOTable2.Fields[20].Value:=ADOTable1.Fields[20].Value;
        ADOTable2.Post;
         Gde:=Gde+1;
          adotable1.Next;
         end;
      ADOTable1.First;
      Label2.Caption:='ГЃГ*Г§Г* Г¤Г*Г*Г*ûõ ГіГ¤Г*Г·Г*Г® îáГ*îâëåГ*Г*';
      Label3.Caption:='Êîëè÷åñòâî Г§Г*ãðóæåГ*Г*ûõ Г§Г*ГЇГЁГ±ГҐГ© ='+INTTOSTR(GDE);
      label2.Visible:=true;
      label3.Visible:=true;
      adoquery1.SQL.Text:='select COUNT(*)from lgotniki';
adoquery1.Active:=true;
s:=adoquery1.Fields[0].Value;
label6.Caption:='îáùåå êîëè÷åñòâî Г§Г*ГЇГЁГ±ГҐГ© Гў ГІГ*áëèöå = '+s;
label6.Visible:=true;
adotable2.Close;
adotable1.Close;
adoconnection2.Connected:=false;
ADOConnection1.Connected:=false;
 
end;
anatoliy1992 вне форума Ответить с цитированием
Старый 03.02.2016, 13:49   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Сделай INSERT-ом из таблицы одной базы в таблицу другой и не мучай делфи, адо, базы, компьютер и прочее
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.02.2016, 13:53   #3
anatoliy1992
Пользователь
 
Регистрация: 31.03.2015
Сообщений: 19
По умолчанию

А как?
anatoliy1992 вне форума Ответить с цитированием
Старый 03.02.2016, 14:04   #4
spirit-ua
Форумчанин
 
Аватар для spirit-ua
 
Регистрация: 04.06.2009
Сообщений: 351
По умолчанию

Цитата:
Сообщение от anatoliy1992 Посмотреть сообщение
А как?
PHP код:
INSERT INTO table1 SELECT FROM table2 
PHP код:
INSET INTO table1(a,b,c,dSELECT abcd FROM table2 
PHP код:
INSERT INTO DB1.Table1 SELECT FROM DB2.Table2 WHERE ... 
Мне разрешено открывать только одну страницу - about :blank. Сперва было скучно, но потом я втянулся. Теперь у меня там живет 2 виртуальных друга, и я слышу голоса из розетки!

Последний раз редактировалось spirit-ua; 03.02.2016 в 14:11.
spirit-ua вне форума Ответить с цитированием
Старый 03.02.2016, 14:22   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Для начала разберись как выше подсказали с синтаксисом INSERT-а
Потом как указать в запросе, что данные с другой базы
И в конце во что и как это завернуть в делфи, коль программно нужно сделать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.02.2016, 16:09   #6
anatoliy1992
Пользователь
 
Регистрация: 31.03.2015
Сообщений: 19
По умолчанию

Хоренькак ето туплю жутко на этом моменте(
вот смотрите открываю одну БД и вторую выбираю местоположение. дальше нужно удалить таблицу из первой БД и вставляю в нее всю таблицу из второй БД.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var   Filename,s:string;
begin
adoconnection2.Connected:=true;
adotable2.Open;
     OpenDialog1.Execute;
     Filename:=opendialog1.FileName;
     ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
         'Data Source='+filename+';Persist Security Info=False';
      ADOConnection1.Connected:=true;
      ADOTable1.TableName:='lgotniki';
      adotable1.Open;


//Âñòàâêà
      adoquery8.SQL.Add('INSERT INTO lgotniki_MFC.lgotniki SELECT *');
      adoquery8.SQL.Add('FROM lgotniki_NEW.lgotniki_new ');
      adoquery8.Active:=true;

Последний раз редактировалось anatoliy1992; 03.02.2016 в 16:17.
anatoliy1992 вне форума Ответить с цитированием
Старый 03.02.2016, 17:13   #7
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

вы сначала это сделайте в самом аксесе, потом уже сюда вставите в полтора клика
come-on вне форума Ответить с цитированием
Старый 03.02.2016, 17:15   #8
anatoliy1992
Пользователь
 
Регистрация: 31.03.2015
Сообщений: 19
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
вы сначала это сделайте в самом аксесе, потом уже сюда вставите в полтора клика
Так ведь две разные БД как с ними в аксессе то рабоать?
anatoliy1992 вне форума Ответить с цитированием
Старый 03.02.2016, 17:37   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Потом как указать в запросе, что данные с другой базы
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.02.2016, 08:40   #10
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию

так в ассесе через ODBC и прикрути эту таблицу. почти любую базу подхватывает , лишь бы доступ к ней был и пакет драйверов в винде только учти что в Win64х по умолчанию используются ODBC 64. а тебе скорее всего надо будет прописать в 32.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.

Последний раз редактировалось IliaIT; 04.02.2016 в 08:43.
IliaIT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скопировать id с одной таблицы на другую таблицу другую форму Staziah2 БД в Delphi 1 08.09.2015 09:14
Delphi.БД Access.как сделать вставку в поле из одной таблицы в другую? JuliaKiK Помощь студентам 1 02.05.2013 01:12
MS SQL SERVER 2005 копирование таблицы из ОДНОЙ БД В другую или перенести все строки из одной таблицы в другую reihtmonbern БД в Delphi 4 17.07.2012 23:25
Перенос данных из одной таблицы в другую в Delphi PinGsama БД в Delphi 4 30.05.2011 04:52
Как скопировать данные таблицы из одной базы access в другую? AK BULLETS БД в Delphi 2 31.03.2010 13:09