Введение Очень часто возникает задача конвертации данных из одной базы данных в другую, из внешнего файла разных форматов в базу данных и наоборот. При этом типы данных внутри базы данных могут быть не только текстовыми, но и двоичными (binary или varbinary).
Известно, что двоичные и текстовые данные усекаются и не полностью выводятся в SQL Server Management Studio. Из-за этих недостатков мне пришлось написать собственное приложение для преобразования данных в/из MSSQL на C# (.
NET Framework 4.0).
Приложение называется ImportExportDataSql и изначально оно создавалось специально для преобразования бинарных полей базы данных в файлы, но затем функционал был расширен.
Приложение портативное, без рекламы и не требует доступа в Интернет.
Возможности приложения
- Результатом SQL-запроса выборки данных формируются данные в формате SQL с проверкой наличия записи в таблице по заданному пользователем условию WHERE.
- Результаты нескольких SQL-запросов объединяются в один файл, если пользователь указывает одно и то же имя выходного файла в разных задачах.
- Все настройки хранятся в XML-файле.
- Возможность запуска из консоли
- Быстрая загрузка/выгрузка в базу данных при работе с CSV
- Возможность загрузки файлов Excel в двух режимах.
- Выполняются только отмеченные задачи
- Задачи, выполненные с ошибками, выделяются красным цветом, а задачи, выполненные без ошибок, — зеленым.
Сообщение об ошибке отображается не только в журнале, но и в виде подсказки напротив строки, где произошла ошибка.
Интерфейс приложения
При запуске приложения необходимо подключиться к базе данных.
После успешного подключения к базе данных отображается список задач.
Типы задач
Сохранить из базы данных в файл
Преобразование полей двоичных типов данных из базы данных в файл.Выбирать этот пункт нужно тогда, когда файлы хранятся в базе данных в двоичном виде и вам необходимо загрузить эти файлы на диск.
В этом случае вы можете настроить имя загружаемого файла, его идентификатор и поле двоичного типа с содержимым файла, задав эти поля с помощью оператора SQL.
Сохранение из базы данных в файл (утилита bcp)
Задача этого типа предполагает использование утилиты bcp. Результатом выполнения задачи этого типа будет BAT-файл и файл формата (с расширением fmt).Файл BAT можно изменить по желанию, что повышает гибкость.
После запуска BAT-файла файлы, скопированные из базы данных, будут созданы в текущем каталоге.
Сохранить из файла в базу данных
Файлы из указанной пользователем папки будут загружены в указанную таблицу и поле.
Сохранение из базы данных в SQL-скрипт
Используя этот метод, вы можете скачать один файл, или всю папку, или просто список указанных файлов, или как оператор в SQL-запросе.Если установлен флажок «Имена полей в условии UPDATE», то выходной SQL-запрос будет сформирован с проверкой существования записи по этим полям в условиях INSERT и UPDATE. Если флажок «Имена полей в условии UPDATE» снят, то запрос будет формироваться только на вставку записи (INSERT) без проверки существования записи.
Пример выгрузки SQL-запроса:
Из базы данных в скрипт SQL (только INSERT)
В отличие от типа задачи «Сохранить из базы данных в SQL-скрипт», эту опцию следует использовать для сокращения текста SQL-запроса, использующего только оператор INSERT. Флажок «Имена полей в условии UPDATE» работает аналогично описанному выше: в типе задачи «Сохранить из БД в SQL-скрипт».
Из базы данных в сценарий SQL (только ОБНОВЛЕНИЕ)
В отличие от типа задачи «Сохранить из базы данных в 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 (бесплатно) сообщество ВК для поддержки пользователей и желающих пообщаться с автором.
Теги: #C++ #.
NET #sql #ms sql server #Microsoft SQL Server #mssql #mssql #converter #converter #преобразование базы данных
-
Цифровой Архитектурный Рендеринг
19 Oct, 24 -
Осторожно: Злоумышленники
19 Oct, 24 -
Mvcc В Postgresql-8. Замораживание
19 Oct, 24 -
Утечка Памяти С Помощью Threadlocal
19 Oct, 24