Введение
Очень часто возникает задача конвертации данных из одной БД в другую, из внешнего файла разного формата в БД и наоборот. При этом типы данных внутри БД могут быть не только текстовые, но и бинарные (binary или varbinary). Бинарные и текстовые данные, как известно, в SQL Server Management Studio обрезаются и не выводятся полностью. В связи с этими недостатками пришлось написать свое приложение для конвертации данных в/из MSSQL на языке C# (.NET Framework 4.0). Приложение называется ImportExportDataSql и изначально он создавался именно для конвертации из бинарных полей БД в файлы, но потом функционал расширялся. Приложение портативное, без рекламы и не требует доступа в Интернет.
Возможности приложения
- Результат SQL-запроса выборки данных генерит данные в SQL-формате с проверкой наличия записи в таблице по указанному пользователем условию WHERE
- Несколько результатов SQL-запросов объединяются в один файл, если пользователь укажет в разных задачах одинаковое имя выходного файла
- Все настройки хранятся в XML файле
- Возможность запуска из консоли
- Быстрая загрузка/выгрузка в БД при работе с CSV
- Возможность загружать Excel-файлы в двух режимах
- Выполняются только отмеченные задачи
- Задачи, выполненные с ошибками подсвечиваются красным цветом, а без ошибок — зеленым. Сообщение об ошибке при этом выводится не только в лог, но и в виде всплывающей подсказки напротив строки, где возникла ошибка
Интерфейс приложения
При запуске приложения необходимо соединиться с БД.
После успешного соединения с БД отображается список задач.
Типы задач
Сохранить из БД в файл
Конвертация полей бинарных типов данных из БД в файл. Этот пункт выбирать нужно тогда, когда файлы хранятся в БД в бинарном виде и нужно эти файлы выгрузить на диск. При этом можно настроить имя выгружаемого файла, его ID и поле бинарного типа с содержимым файла, задав эти поля оператором SQL.
Сохранить из БД в файл (утилитой bcp)
Данный тип задачи предусматривает использование утилиты bcp. Результатом данного типа задачи будет BAT-файл и файл форматирования (с расширением fmt). BAT-файл можно по желанию изменить, что повышает гибкость. После запуска BAT-файла в текущем каталоге будут созданы файлы, скопированные из БД.
Сохранить из файла в БД
Файлы из указанной пользователем папки будут загружены в указанную таблицу и поле.
Сохранить из БД в скрипт SQL
Данным способом можно загрузить один файл, либо папку целиком, либо только список указанных файлов, либо оператором в SQL-запросе. Если будет установлена галочка «Имена полей в условии UPDATE», то SQL-запрос на выходе будет формироваться с проверками на существование записи, согласно этим полям по условию INSERT и UPDATE. Если же галочка «Имена полей в условии UPDATE» снята, то запрос будет генерироваться только на вставку записи (INSERT) без проверок существования записи.
Пример выгрузки SQL-запроса:
Из БД в скрипт SQL (только INSERT)
В отличие от типа задачи «Сохранить из БД в скрипт SQL» этот вариант следует использовать для сокращения текста SQL-запроса в котором применяется только оператор INSERT. Отметка «Имена полей в условии UPDATE» работает аналогично, как описано выше: в типе задачи «Сохранить из БД в скрипт SQL».
Из БД в скрипт SQL (только UPDATE)
В отличие от типа задачи «Сохранить из БД в скрипт SQL» этот вариант следует использовать для сокращения текста SQL-запроса в котором применяется только оператор UPDATE. Отметка «Имена полей в условии UPDATE» работает аналогично, как описано выше: в типе задачи «Сохранить из БД в скрипт SQL».
Статический скрипт SQL
В случае, если нужно подготовить БД, прежде чем выполнить, например: вставку данных, то этот запрос будет выгружен без всяких изменений и добавлен в SQL-файл на выходе.
Сохранить из Excel в скрипт SQL
Преобразует данные из Excel в SQL-скрипт, при чем можно указать не только имя файла и имя листа, но еще и номер строки с которой начать считывание и номер последней обрабатываемой строки. Тип обработки Excel-файла «Поиск по заголовку» будет выполнять выгрузку с поиском текста заголовка, который укажет пользователь, последовательность полей при этом не важна и её можно менять. Тип обработки Excel-файла «Конвертировать все значения ячеек в таблицу» предполагает задание нескольких обязательных полей: Номер строки, номер столбца, значение ячейки и необязательных полей: имя листа и имя файла. Это может быть удобно, когда в системе есть одна универсальная таблица с обязательными полями, перечисленными выше и вся обработка этой таблицы происходит хранимой процедурой или приложением.
Сохранить из БД в CSV
Простая выгрузка данных из БД в CSV с символом-разделителем «точка с запятой» и обрамлением строк символом двойных кавычек.
Сохранить из CSV в SQL
Похожа на выгрузку из Excel, но более расширена за счет параметров «Символ-разделитель», Код кодировки, «Пустые значения заменять на NULL» и «Количество строк в блоке». Файлы обрабатываются построчно, даже если они заняты другим приложением. Результат обработки записывается в SQL-файл по-блокам.
Сохранить из CSV в БД
Выгрузка происходит напрямую в БД очень быстро, по-блокам, за счет использования класса BulkInsert. Большие CSV файлы (в несколько Гб) могут загружаться в БД за несколько минут.
Дальнейший список доработок
- Добавить функцию конвертации структуры БД, с проверкой существования объектов БД.
- Добавить теги к задачам и фильтр по тегам.
- Добавить возможность выбора формата SQL для генерации данных, чтобы можно было работать не только с MSSQL, но и с другими СУБД.
Вывод
Надеюсь, что это приложение поможет и Вам в работе. Выкладываю его в свободное пользование.
Скачать Windows приложение ImportExportDataSql (бесплатно)
Сообщество VK для поддержки пользователей и желающих пообщаться с автором.
alexmay
Искал подобный инструмент, написал свой на node.js + Delphi, но возможно ваш удобнее.
Подскажите — а можете добавить поддержку ODBC, для использования любых SQL БД?