Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 29.05.2022
Сообщений: 49

Из SQLlite3 в БД Firebird

04.06.2022, 14:25. Показов 3112. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток господа;
Имею БД SQLlite3 появилась нужда перенести всю информацию в другую бд другого типа (Firebird)
БД Firebird создал ровно такую же по структуре
а вот как перенести простым запросом sql не могу понять
если с 2 одинаковыми БД всё ясно (найдено на форуме)

Delphi
1
2
3
4
5
6
ADOQuery1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data ' + 'Source=' + ExtractFilePath(Application.ExeName) + 'Base\Base1.mdb' + ';Persist Security Info=False';
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT A.AutorName, B.BookName');
  ADOQuery1.SQL.Add('FROM Autors AS A INNER JOIN [B][Base\Base2][/B].Books AS B ON A.AutorID = B.BookID');
  ADOQuery1.Open;
то с БД разного типа не совсем


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
ADOQuery1.ConnectionString := 
'Provider=MSDASQL.1;Persist Security Info=False;Extended Properti' +
          'es="Driver={SQLite3 ODBC Driver};Database=C:\nginx\public_html\d' +
          'b\main.sqlite;StepAPI=0;SyncPragma=;NoTXN=0;Timeout=;ShortNames' +
          '=0;LongNames=0;NoCreat=0;NoWCHAR=0;FKSupport=0;JournalMode=;OEMC' +
          'P=0;LoadExt=;BigInt=0;JDConv=0;"';
 
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('insert in to имя таблицы[строка подключения] ([поле1,пол2,...,поле3]) values (select * from имя таблицы )');
 
  ADOQuery1.Open;

вот тут и возникла сложность, может кто то подкинет пример, ну либо поправит текущее добро!?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.06.2022, 14:25
Ответы с готовыми решениями:

SQLLite3: Boolean в сложном select запросе
Всем здравствуйте. Возникла проблема с написанием SELECT-запроса к таблице, в котором много условий выборки. Таблица...

Как передать данные из javascript в БД sqllite3?
У меня будет на странице datepicker. У меня есть в модели поле - bir_date = models.DateField(verbose_name="") И я его...

Delphi + Sqllite3.dll + Resource извлечь, подключить, использовать
Для работы с Sqllite требуется dll Sqllite3.dll которая обязана находится в папке рядом с программой или system32. Цель спрятать dll ку...

34
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
04.06.2022, 16:08
Такие вещи намного проще делать с помощью менеджера баз данных, типа Universal Database Tool
0
Модератор
 Аватар для D1973
9924 / 6460 / 2457
Регистрация: 21.01.2014
Сообщений: 27,410
Записей в блоге: 3
04.06.2022, 16:12
Цитата Сообщение от strikervoo Посмотреть сообщение
если с 2 одинаковыми БД всё ясно
А мне вот не очень. При чем тут вообще Access и где заявленные SQLite и FB, которые вот вообще не будут работать через ADO без лихих половецких плясок с бубном (скачать, установить, настроить - тот еще квест) и определенных денежных вливаний (ADO-драйвер для FB, насколько мне известно, платный).

Если БД не содержит бинарных данных то ничего не мешает экспортировать данные из нее в текстовый файл, и импортировать этот файл в базу в другой СУБД. С бинарными данными задача становится нетривиальной...
1
AxBxC=X
 Аватар для harrybook
155 / 135 / 58
Регистрация: 27.04.2016
Сообщений: 549
04.06.2022, 18:54
Delphi замечательно работает с обеими СУБД.
Набросать приложение и перегнать БД из одной в другую.
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
04.06.2022, 20:30
Цитата Сообщение от harrybook Посмотреть сообщение
Delphi замечательно работает с обеими СУБД.
Набросать приложение и перегнать БД из одной в другую.
Гладко было на бумаге, да забыли про овраги
Я перевел немало их в разные форматы и ни разу еще без плясок с бубнами не обошлось, обязательно где-то, что-то несовместимо оказывалось. Даже просто изменение версии СУБД может так подгадить, что специально не придумаешь.
0
368 / 333 / 83
Регистрация: 17.04.2022
Сообщений: 1,116
Записей в блоге: 8
04.06.2022, 20:39
Цитата Сообщение от harrybook Посмотреть сообщение
Delphi замечательно работает с обеими СУБД.
Набросать приложение и перегнать БД из одной в другую.
Ну да. А как вы будете "перегонять" замечательную особенность SQLite, заключающуюся в отсутствии контроля типов, когда у вас в одном столбце могут быть значения с разными типами?
1
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
04.06.2022, 20:58
Цитата Сообщение от D1973 Посмотреть сообщение
При чем тут вообще Access и где заявленные SQLite и FB
Я думаю, автор просто скопировал какую-то настройку ADO из интернета. Он даже не знает, как грамотно подключиться к каждой БД, судя по всему.

strikervoo, если Дельфи последних версий, там есть такая вкладка в палитре компонентов - FireDAC. Вот на нём и надо строить подключение и всю остальную работу с БД.
0
AxBxC=X
 Аватар для harrybook
155 / 135 / 58
Регистрация: 27.04.2016
Сообщений: 549
04.06.2022, 21:04
Действовать нужно по обстоятельствам. Немножко Delphi кода придётся написать, наверное, но других вариантов не вижу.
0
0 / 0 / 0
Регистрация: 29.05.2022
Сообщений: 49
04.06.2022, 21:25  [ТС]
Цитата Сообщение от harrybook Посмотреть сообщение
Набросать приложение и перегнать БД из одной в другую.
это перегонка если через переменные делать она будет долгой, надо именно с базы в базу!

Добавлено через 4 минуты
Цитата Сообщение от D1973 Посмотреть сообщение
А мне вот не очень. При чем тут вообще Access и где заявленные SQLite и FB, которые вот вообще не будут работать через ADO без лихих половецких плясок с бубном (скачать, установить, настроить - тот еще квест) и определенных денежных вливаний (ADO-драйвер для FB, насколько мне известно, платный).
Если БД не содержит бинарных данных то ничего не мешает экспортировать данные из нее в текстовый файл, и импортировать этот файл в базу в другой СУБД. С бинарными данными задача становится нетривиальной...
Аксеес тут так что смог найти для понимания как из базы в базу одного типа выполняется поставленная задача, вот и встала задача что бы пляски обойти, а процесс изьятия информации из одной базы в другую упростить, данные обыкновенные не бинарные!

Добавлено через 1 минуту
Цитата Сообщение от sqltd1 Посмотреть сообщение
Ну да. А как вы будете "перегонять" замечательную особенность SQLite, заключающуюся в отсутствии контроля типов, когда у вас в одном столбце могут быть значения с разными типами?
в моём случае в одном столбце 1 тип данных не иначе!
0
04.06.2022, 21:26

Не по теме:

Цитата Сообщение от Пытливый Посмотреть сообщение
Гладко было на бумаге, да забыли про овраги
Я перевел немало их в разные форматы и ни разу еще без плясок с бубнами не обошлось, обязательно где-то, что-то несовместимо оказывалось.
Мне этим приходилось заниматься до того, как вы зарегились на этом форуме.

0
0 / 0 / 0
Регистрация: 29.05.2022
Сообщений: 49
04.06.2022, 21:33  [ТС]
Цитата Сообщение от Gluck99 Посмотреть сообщение
Я думаю, автор просто скопировал какую-то настройку ADO из интернета. Он даже не знает, как грамотно подключиться к каждой БД, судя по всему.
скопировал специально для того что бы было понятно что из БД в БД, только в моём случае типы БД разные и не аксесс , если к одной подключиться могу то к другой в запросе к сожалению в школе не на учили, вот и прошу помощи или выходжа из ситуации!

Добавлено через 4 минуты
Цитата Сообщение от Gluck99 Посмотреть сообщение
strikervoo, если Дельфи последних версий, там есть такая вкладка в палитре компонентов - FireDAC. Вот на нём и надо строить подключение и всю остальную работу с БД.
Конечно есть, эта вкладка но там же те же запросы SQL в которых из одних придётся подключаться к БД другого типа!

Добавлено через 1 минуту
Цитата Сообщение от harrybook Посмотреть сообщение
Действовать нужно по обстоятельствам. Немножко Delphi кода придётся написать, наверное, но других вариантов не вижу.
без сомнений, просто может из знатаков делал что то похожее
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
04.06.2022, 23:48
все довольно просто
предполагается, что делфи у вас свежая
там есть FireDac
https://www.embarcadero.com/ru... io/firedac
в нем создаете два подключения
одно чтобы читать из SQLite
другое чтобы писать в Firebird
и с помощью SQL запросов и FDQuery достаете данные из одной базы данные
и записываете их в другую базу при помощи FDUpdateSQL во вторую базу
1
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
05.06.2022, 02:14
Цитата Сообщение от strikervoo Посмотреть сообщение
Конечно есть, эта вкладка но там же те же запросы SQL в которых из одних придётся подключаться к БД другого типа!
Да мы уже поняли, что мы тут все дураки, один вы всё знаете, только одно непонятно - почему проблема на вашей стороне.

Для начала изучите азы работы с БД в Дельфи. Какие есть инструменты, что минимально необходимо для начала работы, какие существуют способы получения/добавления данных и т.д. Потому что пока вы демонстрируете полное непонимание, местами ваши тезисы - просто бессмысленный набор слов.

Собственно, основных способа всего два:
Первый, можно обойтись вообще без программирования (ну, почти). Сгенерировать скрипт для БД SQLite, потом его отредактировать с учетом синтаксиса Firebird и запустить в каком-нибудь IBExpert. Вопрос контроля типов открыт.
Второй, написать утилиту, например, на Дельфи. В этом случае подойдет стандартный FireDAC, в нём есть провайдеры и для SQLite и для Firebird. Контроль типов можно организовать программно. Вопрос в количестве записей в БД, насколько это будет продуктивно.
0
368 / 333 / 83
Регистрация: 17.04.2022
Сообщений: 1,116
Записей в блоге: 8
05.06.2022, 05:21
Цитата Сообщение от strikervoo Посмотреть сообщение
без сомнений, просто может из знатаков делал что то похожее
Что-то похожее делать доводилось, если речь идет о переносе БД на другой тип сервера. Это нетривиальная задача. Может быть очень много подводных камней. Для Sqlite навскидку - AUTOINCREMENT, TRIGGER'ы (да, в Sqlite БД они могут быть), поля со смешанными типами

Вы бы вашу БД продемонстрировали что-ли. Или уточните - это для работы или для учебы. Соответственно с вами будут общаться практики или теоретики
0
4 / 2 / 2
Регистрация: 02.02.2021
Сообщений: 206
07.06.2022, 08:34
Делать запрос к одной БД и циклом перебирать строки вставлять в другую, использую для каждой БД свой набор данных (ADOQuery и ADOConnected) , типа так:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
ADOQuery2.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data ' + 'Source=' + ExtractFilePath(Application.ExeName) + 'Base\Base1.mdb' + ';Persist Security Info=False';
 
ADOQuery3.ConnectionString := 
'Provider=MSDASQL.1;Persist Security Info=False;Extended Properti' +
          'es="Driver={SQLite3 ODBC Driver};Database=C:\nginx\public_html\d' +
          'b\main.sqlite;StepAPI=0;SyncPragma=;NoTXN=0;Timeout=;ShortNames' +
          '=0;LongNames=0;NoCreat=0;NoWCHAR=0;FKSupport=0;JournalMode=;OEMC' +
          'P=0;LoadExt=;BigInt=0;JDConv=0;"';
 
  ADOQuery2.Close;
  ADOQuery2.SQL.Clear;
  ADOQuery2.SQL.Add('SELECT A.AutorName, B.BookName');
  ADOQuery2.SQL.Add('FROM Autors AS A INNER JOIN [B][Base\Base2][/B].Books AS B ON A.AutorID = B.BookID');
  ADOQuery2.Open;
with Form2.ADOQuery2 do try //
      Open;
        while not eof do begin
        mytext:='INSERT INTO table1 (pole1, pole2, pole3, pole4 и т.д.) VALUES ('''
        +Form2.ADOQuery2.Fields[0].AsString+''', ' //двойные кавычки для строковых !
        +Form2.ADOQuery2.Fields[1].AsString+', ' //Одинарные кавычки - для чисел!
        +Form2.ADOQuery2.Fields[2].AsString+', '
        +Form2.ADOQuery2.Fields[3].AsString+')';
        Form2.ADOQuery3.SQL.Clear;
        Form2.ADOQuery3.SQL.Add(mytext);
        Form2.ADOQuery3.ExecSQL; //метод "open" работать не будет при INSERT обрати на это внимание
        next;
        end;
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
07.06.2022, 08:52
Цитата Сообщение от MixanMM Посмотреть сообщение
//двойные кавычки для строковых !
и вообще никаких кавычек для параметров
и 100500 раз заново SQL строку создавать не нужно
0
Модератор
 Аватар для D1973
9924 / 6460 / 2457
Регистрация: 21.01.2014
Сообщений: 27,410
Записей в блоге: 3
07.06.2022, 09:18
Цитата Сообщение от MixanMM Посмотреть сообщение
Делать запрос к одной БД и циклом перебирать строки вставлять в другую
Еще раз спрошу: с какого боку тут Access, как Вы собираетесь Firebird цеплять через ODBC?
0
408 / 242 / 88
Регистрация: 28.04.2022
Сообщений: 1,207
07.06.2022, 09:26
Цитата Сообщение от D1973 Посмотреть сообщение
с какого боку тут Access,
ТС тренируется на Access. Думает, что потом просто заменит подключение на SQLite и вуаля, всё готово.

Он ещё пока на стадии торга. Торгуется с нами вокруг своего неправильного решения. Когда наступит стадия принятия, с ТС можно будет работать.
1
4 / 2 / 2
Регистрация: 02.02.2021
Сообщений: 206
07.06.2022, 09:32
Цитата Сообщение от D1973 Посмотреть сообщение
Еще раз спрошу: с какого боку тут Access, как Вы собираетесь Firebird цеплять через ODBC?
Я не работал с FB, оказывается оно не умеет в штатное ODBC, но в целом мой подход оказался рядом с верным : https://devdelphi.ru/blog/rabo... -v-delphi?
Примерно то же самое, только компоненты другие, и да вопрос к ТС - нафига тебе эти танцы с бубном с FB?
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,671
Записей в блоге: 21
07.06.2022, 10:33
а что не так с FB ?
отличный бубен, я на нем уже много лет
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.06.2022, 10:33
Помогаю со студенческими работами здесь

Бот discord.py Проблема с обработкой(Обновлением) таблицы в async методе, sqllite3
Заранее извиняюсь за всю корявость, спасибо за вашу помощь и уделённое время :) Суть проблемы состоит в том, что это попытка обновить...

FireBird + Interbase&Firebird Development Studio
Установил FireBird 2.5 SuperClassic и Interbase&Firebird Development Studio. Зашел в студию, создал таблицу, пытаюсь создать БД - выдает...

Разбиение строки в FireBird - Firebird/InterBase
Продолжая тему отсюда: https://www.cyberforum.ru/firebird/thread309236.html :wall: Есть поле типа VARCHAR, в котором хранятся данные вида...

Драйвер node-firebird и firebird
Добрый вечер! Имеется такой код подключения к БД и запрос: var Firebird = require('node-firebird'); var options = {}; ...

Как или чем конвертировать таблицы из Firebird в MySQL или наоборот из MySQL в Firebird ?!
Предлагайте все возможные варианты! Заранее при много благодарен!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru