Ibexpert импорт данных из excel

Web or desctop App Developer

Так уж случилось что сайт простаивает, а в свое время я занимался им активно, идея просто отличная и забросить ее не в коем случае нельзя, поэтому мной было принято решение о продаже этого сайта.
Что получает в итоге покупатель:

  • Весь контент сайта(все содержимое хостинга)
  • Полные права на доменное имя сайта(сделаем трансфер)
  • Копирайт сайта на большом количестве сторонних ресурсов так как сайту уже более 4-х лет
  • Готовый движок форума и все исходные тексты системы управления сайтом
  • Все исходные тексты ПО которое опубликовано на сайте
  • Все почтовые ящики доменного имени
  • Все домены третьего уровня

Дополнительную информацию о статистике посещения, клиентах, вы можете узнать написав на почту koder@koder.kz

Добавил admin | Категория Заметки про IBExpert, Firebird | 14 Декабря 2013

В IBExpert есть такой замечательный функционал «извлечение метаданных» он позволяет получить структуру таблицы, получить данные из какой либо таблице. Это необходимо например при переезде с одной СУБД на другую или к примеру при чистке метаданных БД, или когда вы хотите перенести БД на другой физический сервер а физически не можете подступиться к файлу базы данных. И так извлечение метаданных.

Заходим в инструменты – извлечение метаданных, перед нами появляется интерфейс по извлечению метаданных.

И так тут мы видим вкладки:

-Extract Metadata IBEBlock.

Вкладка метаобъекты содержит информацию о объектах БД которые можно импортировать, это могут быть:

Доступные объекты для импорта находятся в левой части окна в столбике «Доступные объекты»(№ 1 на рисунке). Объекты выбранные для импорта находятся в правой части окна в столбике «Выбранные объекты» (№ 2 на рисунке), добавлять или удалять объекты можно с помощью функциональных кнопок (№ 3 на рисунке).

Если нужно извлечь всю БД то можно поставить галочку «Извлечь всё».

Таблицы данных. Если нужно извлечь информацию из таблиц то в этом нам поможет вкладка «Таблицы данных».

Avaliable таблицы (№1 на рисунке) таблицы которые доступны для извлечения. Кнопки для настройки выгрузки (№2 на рисунке). Selected таблицы или выбранные таблицы обозначены №3 на рисунке.

Настройки. Вкладка настройки содержит основные операции по настройки выгружаемых данных.

-включить в скрипт оператор ‘CREATE DATABASE; если вы, к примеру импортируете БД полностью что бы поднять ее на новом сервере то безусловно нужно установить эту галочку;

-включить в скрипт оператор ‘CONNECT’; если вы устанавливаете подключение к БД вручную то галочку можно не ставить, если подключение устанавливается автоматически необходимо галочку установить;

-включить пароль в состав инструкций ‘connect’ и ‘create database’. Если нужно извлечь имя пользователя и пароль для нового подключения, то нужно установить эту галочку.

Параметры метаданных не должны у вас вызвать особого затруднения, если таковые возникнут можем обсудить их в комментариях к этой статье.

Вкладка протокол содержит информацию о ходе извлечения метаданных.

Вкладка Extract Metadata IDEBlock это скрипт на основе которого будут извлекаться метаданные из БД.

Читайте также:  Программа асус для кулеров

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

Это скорее не статья, а перечень средств для решения указанной задачи, вроде списка инструментария из downloads.

Собственно, тип импорта и экспорта данных бывает:

  1. одноразовый, когда нужно перенести данные из одного проекта в другой,
  2. редкий, когда задача переноса данных возникает от случая к случаю,
  3. постоянный, когда импорт или экспорт данных является неотъемлемой составной частью проекта.

Соответственно, готовые инструменты импорта-экспорта годятся в основном для первых двух типов задачи, всевозможные драйверы – для второго и третьего, и в третьем случае, как правило, используется только код приложений, написанных самостоятельно.

Итак, перечислим все возможные инструменты и способы именно в этом порядке:

  • IBPump – позволяет переносить данные из источников ADO, BDE, ODBC в базы Interbase, а также переносить данные из одной базы Interbase в другую. Может сохранять конфигурацию для упрощения повторного переноса данных, отключать триггеры на время копирования данных, выполнять функции "утилиты командной строки" (silent mode) и др. Т. е., как видите, годится для всех трех случаев.
  • BDE – возможно использовать для копирования данных посредством выполнения так называемых "гетерогенных запросов". В том числе содержит компонент TBatchMove, которым можно копировать данные даже в DesignTime, т. е. при разработке приложения. В силу на ограничение использования транзакций, а также из-за неполной поддержки 3-го диалекта баз Interbase годится для второго случая, и редко – для третьего.
  • ODBC-драйверы. Можно получать или передавать данные используя MS Office, Access и другие офисные приложения. Второй и третий случай соответственно.
  • драйверы OLE DB, в частности IBProvider. То же самое что и ODBC, только с полным контролем транзакций, управлением кэширования данных и т. п.
  • External tables – для регулярного импорта и экспорта данных. Пример использования – тест скорости вставки/обновления данных. Недостатки – фиксированный размер строки, а значит невозможность передачи varchar, blob.
  • TIBBatch и наследники от этого класса, IBSQL.PAS из IBX (и аналогичные классы в FIBPlus). Позволяют работать с данными фиксированного размера, с текстовыми файлами с разделителями (csv) и т. п. Подходит для всех случаев, потому что в самом простом случае код например для экспорта в csv-файл составляет всего 5-6 строк (примеры есть в хелпе – d7ibx.hlp/ibx.hlp и т. п.).
  • IBExpert и IBEScript – позволяют копировать данные путем генерации скрипта. Например, для небольшой базы данных можно извлечь целиком метаданные и данные в виде команд insert.
  • IB_SQL – использовать можно если эта утилита у вас под рукой, и вы регулярно ею пользуетесь. Механизм переноса (только между базами IB) – коннект к двум БД, в одной select, в другой insert.
Читайте также:  Смс с номера 5151 о платной подписке

Для компонент и драйверов необходимо отметить следующее: многие при первом подходе к "снаряду" в качестве источника экспортируемых/импортируемых данных используют TTable, TQuery, IBQuery, IBDataSet и подобные компоненты. Поскольку указанные компоненты кэшируют результат запроса в памяти, это приводит к исчерпанию памяти на машине, где находится копирующая данные программа, или к серьезному замедлению процесса копирования. Поэтому подобные компоненты ни в коем случае нельзя использовать для экспорта/импорта – вместо них надо использовать TIBSQL (IBX) или pFIBQuery (FIBPlus). Эти компоненты не имеют кэша и работают только с одной записью в памяти. Поэтому экспорт/импорт данных будет максимально эффективным.

По указанной причине не следует импортировать данные например в IBDataSet или TTable – при импорте каждой записи будет перевыполняться запрос, читающий данные (SelectSQL или автоматически генерируемый в TTable или "живом" TQuery select), а значит чем больше импортируется записей, тем медленнее с их количеством будет происходить импорт. При экспорте с использованием этих компонент работа будет происходить быстрее, но все равно считываемые для экспорта данные будут накапливаться в буфере компонента, что вызовет постоянный рост используемой приложением памяти (и опять же вызовет замедление экспорта вплоть до ошибки out of memory).

Таким образом, можно вывести основное правило – для чтения данных нужно использовать компонент, выполняющий запрос без кэширования данных, а для вставки данных использовать компонент, только выполняющий команду insert, и ничего больше.

Tool for exporting and importing data with Firebird and InterBase databases

Latest version 1.67

  • Added option -B to set a different separator for CSV export (instead of comma)
  • Fixed hang with INSERT statement export when field starts with single-quote
  • Fixed hang with CSV export when field starts with quote
  • Asterisk character is no longer removed when loading statements from file
  • NUMERIC and DECIMAL columns don’t suffer from conversions to doubles anymore
  • View the latest changes
  • Read HTML manual for usage instructions

What does it do?

With FBExport, one can easily export/import data from/to Firebird table into a text file (actually it’s a binary file). I first tought that XML format would be the way to go, but size of exported file matters, so I used my own format which uses less space. It can also export data in CSV format and as INSERT statements.

FBExport is a command-line tool, so you can easily use it inside batch scripts. Currently, Linux and Windows versions are available, but I hope it can be built with any compiler that can build IBPP library. For versions 1.40 to 1.60, the is also a GUI version of the tool available. GUI is not flexible enough to support the newest features in version 1.65, so 1.60 will probably be the last version with GUI variant.

Читайте также:  File put contents не работает

FBExport is released as a single package containing source code, linux and windows command-line and GUI binaries. I decided to use .zip format since I wanted to put everything into a single file, and .zip seems to be most available on both platforms. You can use unzip program (from InfoZip package) on Linux to unpack it. The file is named: fbx160-full.zip. Please note that while this is the last version with GUI, newer CLI versions support more features. Please use the download link on the left to fetch the latest version.

I was trying to copy data from one Firebird database to another via external tables. The whole import/export process was needed since there was no chance of getting access to both databases at the same time, so any of those data-pump utilities was out of the question. Thus, I came up with the idea to export data into text file, copy that file to other server, and import the data into other database.

Then I had problem with NULLs. When exporting data into external tables, database engine turns all null values into zeroes (hex value 0). When importing back, integers become zero, dates become 17.11.1858, etc. I also tried to use CHAR for all exporting, but then, null value for integer becomes " ", or something similar, and one gets error message: Conversion error from string " ".

Instead of writing some UDFs or a lot of Stored Procedures for each table, I decided to make a tool that will do this job.

Also, Firebird has a heavy network protocol which works slow over the modem line, so it takes a lot of time to send data with some data-pump tool. With FBExport you can write a batch script to export the data at one end, zip it, and send over the wire. Then at the other side, unpack and import. Transfering one big .zip file is much faster than making database connections, transactions, filling parameter values, executing statements, commiting, etc.

This tool uses IBPP library for database access. It supports Firebird 1.0, 1.5, 2.0 and InterBase 6 databases. It should also work with InterBase 6.5 and 7, but noone has confirmed it yet. If it works for you, please let me know. As IBPP project grows, I hope to support all database engines they do.

FBExport doesn’t support ARRAY datatype.

FBExport is Free Software, released under Mozilla Public licence, version 1.0

This project is hosted on Sourceforge. You can get the packages in the download area.