У меня есть несколько больших .bak
файлов из дампа SQL Server 2005.
Могу ли я восстановить их без использования SQL Server, либо в PostgreSQL, MySQL, либо в текстовые файлы?
Решение с открытым исходным кодом было бы наиболее полезным.
У меня есть несколько больших .bak
файлов из дампа SQL Server 2005.
Могу ли я восстановить их без использования SQL Server, либо в PostgreSQL, MySQL, либо в текстовые файлы?
Решение с открытым исходным кодом было бы наиболее полезным.
Ответы:
Вот что я предлагаю:
если на виртуальной машине достаточно места для хранения резервной копии, но недостаточно места для ее восстановления, вы можете выполнить «виртуальное восстановление», используя пробную версию продукта от Red-Gate с тем же именем (что позволяет взаимодействовать с файл резервной копии, как будто он был восстановлен). В противном случае восстановите базу данных обычным способом .
Как только база данных станет доступной (с помощью обычного или виртуального восстановления), вы можете сгенерировать сценарии для схемы и данных следующим образом:
В качестве альтернативы вы можете попробовать поиграть с утилитой BCP для извлечения данных в файлы CSV или аналогичные, но вам придется делать это по таблице или использовать некоторые умные сценарии (PowerShell, T-SQL, C # / SMO и т. Д. ) для генерации всех команд bcp для вас. Попав в CSV-файлы, следует выполнить массовую загрузку данных в Postgres (но у вас все еще будет немного работы для генерации таблиц).
В качестве окончательного предложения, если файл .bak не слишком большой и данные не являются конфиденциальными, я более чем готов попытаться сгенерировать для вас файлы в нужном вам формате. У меня много виртуальных машин Windows с пространством, и проблема заключается в том, чтобы доставить файл .BAK туда, где я могу его извлечь, особенно если он больше, чем поддерживает большинство служб обмена файлами.
К сожалению, нет способа получить доступ к содержимому файла .bak, не имея глубоких знаний о внутренностях самого файла. Я могу думать об одном человеке здесь, который может быть осведомлен об этой информации, но я не могу сказать, скажет ли этот человек вам, как это сделать.
Итак, вам нужно установить экземпляр SQL Server. Вам также необходимо убедиться, что этот экземпляр может взаимодействовать с вашим сервером Postgres (фриг с pg_hba.conf). После этого у вас есть несколько хороших путей для переноса данных.
Первый путь - установить драйвер ODBC для Postgres Windows и установить соединение с сервером pg. Затем вы можете использовать SSIS для создания сценария миграции данных. Если вы собираетесь пойти по этому пути, я предлагаю вам установить SSIS при установке сервера базы данных.
Другой вариант также включает подключение драйвера ODBC, но вы можете создать связанный сервер в SQL Server и запускать вставки в экземпляр pg через SQL Server. Я уже ответил на этот точный вопрос здесь, поэтому его не должно быть трудно найти.
РЕДАКТИРОВАТЬ
Чтобы включить комментарий Аарона, после того, как вы запустите SQL Server, вы также можете экспортировать данные в простые файлы различными способами. Если вы выберете этот путь, дайте мне знать, и я опубликую несколько способов сделать это
РЕДАКТИРОВАТЬ (2):
Процесс связанного сервера может быть не лучшим подходом, если вы не хотите заранее создавать структуры. Это мой предпочтительный метод, но обычно у меня уже есть структура с обеих сторон.
Это оставляет ответ Аарона Бертрана лучшим ответом. Пожалуйста , обратите внимание , что в дополнение к типам данных ( по IDENTITY
сравнению SEQUENCE
, Postgres ничего не знает , NVARCHAR
так как установить кодировку на самой базе данных). Postgres ничего не знает CREATE CLUSTERED INDEX
( CLUSTER
может работать для вас). Наконец, поскольку я вижу в комментариях, что вы собираетесь использовать пространственные данные, postgresql ничего не знает о CREATE SPATIAL INDEX
синтаксисе. Вам нужно будет установить postgis и использовать INDEXTYPE
ключевое слово для создания пространственных индексов. Наконец, убедитесь, что вы правильно обрабатываете схемы.
Короче: