ImportExportDataSql — бесплатный конвертер данных MSSQL

от автора

Введение

Очень часто возникает задача конвертации данных из одной БД в другую, из внешнего файла разного формата в БД и наоборот. При этом типы данных внутри БД могут быть не только текстовые, но и бинарные (binary или varbinary). Бинарные и текстовые данные, как известно, в SQL Server Management Studio обрезаются и не выводятся полностью. В связи с этими недостатками пришлось написать свое приложение для конвертации данных в/из MSSQL на языке C# (.NET Framework 4.0). Приложение называется ImportExportDataSql и изначально он создавался именно для конвертации из бинарных полей БД в файлы, но потом функционал расширялся. Приложение портативное, без рекламы и не требует доступа в Интернет.

Возможности приложения

  1. Результат SQL-запроса выборки данных генерит данные в SQL-формате с проверкой наличия записи в таблице по указанному пользователем условию WHERE
  2. Несколько результатов SQL-запросов объединяются в один файл, если пользователь укажет в разных задачах одинаковое имя выходного файла
  3. Все настройки хранятся в XML файле
  4. Возможность запуска из консоли
  5. Быстрая загрузка/выгрузка в БД при работе с CSV
  6. Возможность загружать Excel-файлы в двух режимах
  7. Выполняются только отмеченные задачи
  8. Задачи, выполненные с ошибками подсвечиваются красным цветом, а без ошибок — зеленым. Сообщение об ошибке при этом выводится не только в лог, но и в виде всплывающей подсказки напротив строки, где возникла ошибка

Интерфейс приложения

При запуске приложения необходимо соединиться с БД.

После успешного соединения с БД отображается список задач.

Типы задач

Сохранить из БД в файл

Конвертация полей бинарных типов данных из БД в файл. Этот пункт выбирать нужно тогда, когда файлы хранятся в БД в бинарном виде и нужно эти файлы выгрузить на диск. При этом можно настроить имя выгружаемого файла, его 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 для поддержки пользователей и желающих пообщаться с автором

ссылка на оригинал статьи https://habr.com/ru/post/485994/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *