Скопируйте всю базу данных SQL Server в JSON из Python - PullRequest
0 голосов
/ 31 марта 2010

Я столкнулся с нетипичной проблемой преобразования. Около десяти лет назад я закодировал большой сайт в ASP. С годами он превратился в ASP.NET, но сохранил ту же базу данных.

Я только что заново сделал сайт в Django и скопировал все основные данные, но прежде чем отменить свою учетную запись на хосте, я должен убедиться, что у меня есть долгосрочная резервная копия данных поэтому, если окажется, что я что-то упустил, я могу скопировать это из локальной копии.

Чтобы усложнить ситуацию, у меня больше нет Windows. Я переехал в Ubuntu на всех своих машинах некоторое время назад. Я мог бы попросить хост отправить мне резервную копию, но не имея доступа к машине с MSSQL, я бы не смог использовать , если бы мне было нужно.

Так что я ищу что-то, что делает:

db = {}
for table in database:
    db[table.name] = [row for row in table]

И тогда я мог бы где-нибудь сериализовать db для последующего потребления ... Но как мне выполнить итерацию таблицы? Есть ли более простой способ сделать все это? Может ли MSSQL выполнять кроссплатформенный SQLDump (включая данные)?

Для предыдущего MSSQL я использовал pymssql, но я не знаю, как перебирать таблицы и копировать строки (в идеале с заголовками столбцов, чтобы я мог определить, что это за данные). Я не ищу много кода, но мне нужно ткнуть в правильном направлении.

Ответы [ 4 ]

1 голос
/ 31 марта 2010

Я знаю, что вы сказали JSON, но очень просто сгенерировать сценарий SQL для полного дампа в XML:

SELECT  REPLACE(REPLACE('SELECT * FROM {TABLE_SCHEMA}.{TABLE_NAME} FOR XML RAW', '{TABLE_SCHEMA}',
                        QUOTENAME(TABLE_SCHEMA)), '{TABLE_NAME}', QUOTENAME(TABLE_NAME))
FROM    INFORMATION_SCHEMA.TABLES
WHERE   TABLE_TYPE = 'BASE TABLE'
ORDER BY TABLE_SCHEMA
       ,TABLE_NAME
1 голос
/ 31 марта 2010

В дополнение к вашему подходу к кодированию - я бы сказал:

  • настроить виртуальную машину с eval на windows
  • поставить сервер sql eval
  • восстановить ваши данные
  • проверьте это вручную или автоматически, используя превосходные инструменты сценариев БД из red-gate для сценария данных и схемы
  • если все хорошо, то у вас есть (а) хорошая резервная копия и (б) вывод в виде сценария.
1 голос
/ 31 марта 2010

Мне понравился модуль python ADOdb, когда мне нужно было подключиться к серверу sql из python. Вот ссылка на простой учебник / пример: http://phplens.com/lens/adodb/adodb-py-docs.htm#tutorial

1 голос
/ 31 марта 2010

Посмотрите таблицы sysobjects и syscolumns. Также попробуйте:

SELECT * FROM sysobjects WHERE name LIKE 'sys%'

чтобы найти любые другие интересные объекты. См. здесь для получения дополнительной информации об этих таблицах и новых аналогах SQL2005.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...