У мене є декілька великих .bak
файлів з дампа SQL Server 2005.
Чи можу я відновити їх без використання SQL Server, або до PostgreSQL, MySQL, або до плоских текстових файлів?
Рішення з відкритим кодом було б найбільш корисним.
У мене є декілька великих .bak
файлів з дампа SQL Server 2005.
Чи можу я відновити їх без використання SQL Server, або до PostgreSQL, MySQL, або до плоских текстових файлів?
Рішення з відкритим кодом було б найбільш корисним.
Відповіді:
Ось що я пропоную:
якщо у VM є достатньо місця для резервного копіювання, але недостатньо місця для його відновлення, ви можете виконати "віртуальне відновлення", використовуючи пробну версію продукту з 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. На це питання я вже відповів раніше, тому його не важко знайти.
EDIT
Щоб включити коментар Аарона, після запуску та запуску SQL Server ви також можете експортувати дані в плоскі файли різними способами. Якщо ви вибрали цей шлях, дайте мені знати, і я опублікую кілька способів зробити це
EDIT (2):
Процес пов'язаного сервера може бути не найкращим підходом, якщо ви не хочете створити структури заздалегідь. Це мій кращий метод, але я зазвичай вже маю структуру з обох сторін.
Це залишає відповідь Аарона Бертран як найкращу відповідь. Зверніть увагу, що окрім типів даних ( IDENTITY
порівняно SEQUENCE
, постгреси нічого не знають, NVARCHAR
оскільки ви встановили кодування в самій базі даних). Postgres нічого не знає CREATE CLUSTERED INDEX
( CLUSTER
може працювати для вас). Нарешті, оскільки я бачу в коментарях, що ти будеш використовувати просторові дані, postgresql нічого не знає про CREATE SPATIAL INDEX
синтаксис. Вам потрібно буде встановити postgis та використовувати INDEXTYPE
ключове слово для створення просторових індексів. Нарешті, переконайтеся, що ви належним чином обробляєте схеми.
Довга історія: