Приложений для конвертации данных в БД очень много и у каждого есть какая-то особенность. Так как сам пишу универсальное приложение ImportExportDataSql для импорта/экспорта данных (пока только Microsoft SQL Server и под Windows), то хочу собрать статистику о том, какими функциями вы пользуетесь в подобных приложениях и за что Вам нравится то или иное приложение?
Надеюсь, что у Вас найдется пару минут, чтобы принять участие в опросе.
Немного о ImportExportDataSql
Приложение ImportExportDataSql бесплатное, без рекламы, оповещает о новых версиях, наличие командной строки и Вы можете скачать его и использовать в своих проектах.
С помощью ImportExportDataSql Вы сможете:
- быстро загружать CSV файлы большого объема (более 1Гб) в SQL Server
- загружать Excel файлы и CSV с возможностью настройки полей, а также с ограничением количества обрабатываемых строк (удобно при отладке)
- выгружать выборочные данные из БД, в SQL формате и затем выполнять этот скрипт на другой БД (т.е. использовать как средство синхронизации данных)
- копировать джобы с одной машины на другую
- выгружать структуру БД.
Главной особенностью ImportExportDataSql, является то, что можно объединять несколько SELECT запросов, выгружая результат в виде SQL в один файл.
Добавляйтесь в группу VK, пишите свои пожелания, буду рад доработать приложение под Ваши нужды.
ar2rsoft
Мало в каких подобных приложениях есть сравнение двух баз/таблиц. Не знаю насколько часто это нужно кому-то, но мне несколько лет назад очень нужно было, и единственное решение, которое я нашел это HeidiSQL, который в моем случае глючил довольно сильно.
Речь о функционале, когда можно выбрать две базы/таблицы и сравнить их, а как итог, получить SQL, который приведет вторую сравниваемую базу/таблицу к такой же структуре как первая, то есть добавит недостающие таблицы/столбцы, изменит тип столбцов, но не будет удалять текущие данные.
SDKiller
Не всегда можно изменить тип столбцов без потери данных
shmelev-1987 Автор
Как раз сейчас занимаюсь такой задачей. Для SQL Server нет идеального решения, который сделал бы выгрузку структуры таблиц в SQL так же, как это делает SQL Server Management Studio (SSMS), с файловыми группами и секционированными функциями. Даже SSDT не умеет выгружать файловые группы в таблицах.
Не подскажете, HeidiSQL умеет выгружать таблицы в том же виде, что и SSMS?
ar2rsoft
К сожалению не подскажу, не пользовался SSMS
rorc
Если нужна точная копия таблицы, не лучше ли будет использовать drop, create, insert из дампа, вместо сравнения?
Понятно, что создание индексов займет достаточно много времени на больших объемах данных, но и сравнение в этом случае зависнет на долго.
shmelev-1987 Автор
Если нет FOREIGN KEYS, то можно и пересоздать таблицу.
На счет индексов могу высказать свое мнение, на примере MSSQL:
1) если таблица небольшая, то можно создать индексы после заполнения таблицы,
2) если таблица занимает несколько Гб, то для создания кластеризованного индекса понадобится места столько же, сколько и сама таблица
Поэтому, предпочитаю, создавать индексы заранее на больших таблицах
ar2rsoft
А зачем? Если база на допустим 50-100 гигов, заяем гонять эти данные туда сюда если надо добавить один/два столбца?
Ну и база может использоваться, на время выгрузок станет недоступной и могут потеряться данные
rorc
За это время данные полученные за время сравнения двух больших таблиц могут устареть, что тоже может стать проблемой.
Чтобы добавить два столбца, достаточно сравнивать только схемы и сгенерировать код.
Но тут опять в зависимости от используемой базы данных и кода приложения могут быть проблемы. Например, проверка в коде на не пустое поле, когда в это поле данные еще не импортировались из dev таблицы.
Чтобы вставить данные в пустые столбцы — достаточно импортировать их по ключевому полю из другой таблицы.
Возможная проблема при частичной синхронизации — поле не должно быть пустым, но т.к. запись проигнорирована при импорте, то редактирование заказа не возможно.
Все очень индивидуально, мне например не хватает просмотра миграций из фреймвоков, когда нужно посмотреть изменения не в виде кода приложения, а в виде sql запросов. Т.к. используемых фреймворков много и не всегда точно помнишь, что делать, приходится листать записи.
В функционале, скорее всего должны быть какие-то типовые операции, вида скопировать столбец из таблицы А в таблицу Б, с возможностью гибкой настройки и выполнения дополнительных операций необходимых для импорта.
shmelev-1987 Автор
Я написал модуль отслеживания изменения структуры БД на SQL сервер, так что проблем с просмотром истории, кто и что менял, теперь нет. Все что нужно, это создать триггер:
в котором нужно обрабатывать событие EVENTDATA(), подробности в этой статье
anshev0
Red Gate SQL Comparer сравнивает для SQL Server отлично, Oracle есть. Как Вам нужно со скриптами и всем чем нужно. Также dbforge умеет это делать. Наберите в поисковике название нужной БД и слово Comparer, наверняка найдётся нужное. HeidiSQL для сравнения никогда не пользовал.