Converter backup do MySQL (script de despejo) para MS SQL?

1

Eu tenho uma saída mysqldump de um banco de dados bastante grande (por medida de fazer as coisas manualmente) salvo em um arquivo de texto. Alguém sabe de uma maneira (gratuita) de usar isso para construir um banco de dados no MS SQL? Eu estou usando especificamente o SQL Server 2008.

    
por David 22.10.2010 / 20:10

2 respostas

1

Eu usei algo assim:

-- Path/Filename of inputfile for later use
declare @Out varchar(100)
set @out = 'c:\data\Test\TBL1245.dat'

-- Define a structurefile based on a predefined target-table for later use:
exec master..xp_cmdshell  'bcp DB4711.dbo.[TBL1245] format nul -t\t  -c -x -f "c:\data\Test\Config\TBL1245.xml" -T'

-- initialie the targettable:
truncate table   DB4711.dbo.[TBL1245]

-- Load the data:
INSERT DB4711.dbo.[TBL1245] 
exec('SELECT * 
FROM OPENROWSET (
    BULK ''' + @out + '''
    , FORMATFILE = ''c:\data\Test\Config\TBL1245.xml''
    , ROWS_PER_BATCH = 100
) as co_in
where KeyFLD is not NULL') -- a condition may be set here if needed

Supondo que você tenha uma tabela (TBL1245) em um banco de dados (DB4711) para armazenar todos os arquivos do seu arquivo datadumo. se você tiver que mudar o delimitador veja em ms-bol para os parâmetros bcp.

    
por 11.05.2011 / 11:59
2

Você pode recarregar os dados de volta no MySQL e executar o mysqldump usando o seguinte:

mysqldump -h ... -u ... -p ... --compatível = mssql > MSSQL_Compatible_Data.sql

Aqui está o que o mysqldump --help --verbose diz sobre isso

- compatible = name Altera o despejo para ser compatível com um determinado modo.
Por padrão, as tabelas são despejadas em um formato otimizado para o
MySQL Os modos legais são: ansi, mysql323, mysql40,
postgresql, oracle, mssql, db2, maxdb, no_key_options,
no_table_options, no_field_options. Pode-se usar vários modos separados por vírgulas. Nota: Requer o servidor MySQL
versão 4.1.0 ou superior. Esta opção é ignorada com o
versões anteriores do servidor.

Experimente!

    
por 15.04.2011 / 21:25