Processo de migração
Transformação de programa e migração de banco de dados
Tipo de migração
Migração online e migração offline
Ferramenta de migração
Você pode usar o SQL Server Management Studio, que adiciona um driver ODBC para operar o Mysql.
Uso de SQL OPENQUERY
Função OPENQUERY, executa remotamente adição, exclusão, modificação e consulta de banco de dados.
por exemplo:
-
OPENQUERY ([MYSQL-STAGE-STAGE], 'selecione * de etl_migrate_log onde table_name =' 'notas' ';')
O primeiro parâmetro é o nome do servidor vinculado configurado e o segundo parâmetro é o comando MySQL a ser executado
Adicionar, excluir, modificar
--1.SELECT 语句
SELECT * FROM OPENQUERY ([MYSQL-STAGE-STAGE], 'selecione * from etl_migrate_log onde table_name =' 'notas' ';');
- 或
SELECT * FROM OPENQUERY ([MYSQL-STAGE-STAGE], 'select * from etl_migrate_log') WHERE table_name = 'notes'
--2.INSERT 语句 , INTO 可 省略
INSERT INTO OPENQUERY ([MYSQL-STAGE-STAGE] , 'selecionar table_name, endtime de etl_migrate_log;') VALUES ('notes', now ())
--3.UPDATE 语句
UPDATE OPENQUERY ([MYSQL-STAGE-STAGE], 'selecionar table_name, endtime de etl_migrate_log onde table_name =' ' notas '' ') SET endtime = now ()
--4.DELETE ,, FROM 可 省略
DELETE FROM OPENQUERY ([MYSQL-STAGE-STAGE],' select * from etl_migrate_log onde table_name = '' notes '' '
DELETE FROM OPENQUERY ([MYSQL-STAGE-STAGE], 'select * from etl_migrate_log') WHERE table_name = @tablename
Diferença de estrutura e sintaxe
-
, Tipo de dados Timestamp
Ambos sqlserver e mysql têm um tipo de dados de carimbo de data / hora, mas sua implementação é bem diferente.
No SQL Server, este tipo indica a ordem relativa de modificação dos dados no banco de dados.Seu valor é essencialmente um número crescente do tipo bigint, independente de hora e data, e o número não será relido no nível da instância do banco de dados.
No mysql, este tipo indica a ordem relativa em que a modificação dos dados ocorre no banco de dados.É essencialmente um tempo, que pode ser repetido no nível da tabela.
A maior armadilha é que esse tipo de campo é o campo-chave do nosso negócio, usado para que os usuários extraiam dados do servidor.
A solução final é migrar os dados deste campo do servidor sql para o mysql de acordo com o valor de bigint, o mysql adiciona um tipo de dados timastamp e o programa adiciona um mecanismo de julgamento.
2. Conjunto de caracteres e expressões de emoji
Por padrão, as expressões de emoji podem ser salvas diretamente no sqlserver. O processo de migração não percebeu o problema. O problema foi descoberto depois que os dados históricos foram migrados.
É necessário usar utf8mb4 para salvar esses dados no mysql.
3. O índice não pode exceder o tamanho
O comprimento do índice no mysql não pode exceder 767 bytes! ! !
Este só pode ser um tipo de dados otimizado.
Por exemplo, alguns campos salvam o macid do dispositivo, o tipo de dado é varchar (50), após investigação, verifica-se que o macid possui apenas 12 bits, que podem ser modificados para varchar (12).
E se int pode ser alterado para tinyint ou smallint, pode latin1 ser usado em vez de utf8 (é claro que é melhor usar utf8 uniformemente), etc.
Aqui está principalmente a otimização de tipos de dados e haverá um artigo especial para introduzir a otimização de tipo de dados posteriormente.
4. Tipo Varchar (max)
O MySQL não tem esse tipo de dados e o tipo de texto é obrigatório no MySQL.
5. Sintaxe comum incompatível
Um dos sqlserver usa top para buscar as primeiras linhas de dados, e mysql usa limit para completar esta função. Isso é relativamente fácil de modificar.
Os dois métodos de uso de tabelas temporárias são diferentes.
6, recursão CTE
Em operações onde há uma consulta recursiva, o sqlserver possui um ótimo recurso que é a consulta recursiva CTE.
7, consulta de janela
A função over window no sqlserver também é um recurso que eu gosto muito, como classificação de agrupamento, intervalo de agrupamento e outras consultas.