Jump to content
t0ze

[Resolvido] MySQL < AS400

Recommended Posts

t0ze

Boa noite,

Alguém já se deparou com o cenário de ter que ir "ler" dados a uma base de dados AS400 (db2). E importar esses dados para uma base de dados MYSQL?

Para já do que vi posso:

  • Usar PHP para ligar a base de dados e importar para o MYSQL ?
  • Fazer um linked server no MS SQL e depois passar para o MYSQL ?
  • Outras...

Share this post


Link to post
Share on other sites
apocsantos

Bom dia,

Uma possibilidade seria usar linguagem java e o driver JDBC DB2Driver, para o AS/400 e o respectivo driver JDBC para Mysql. Usas uma connection para a base de dados em AS/400, carregas os dados para um objecto em memória obtidos atravez de um sql statment seguido da connecção à base de dados Mysql e o respectivo SQL Statment para inserir os dados.

Existem muitas mais possibilidades, podes sempre gerar um ficheiro .csv do lado do AS/400 e importa-lo do lado do MySQL. Em teoria (pois nunca testei) até poderias fazer a ligação em Javascript ao DB2, fazer o select e ligar ao Mysql e fazer o Insert, mas nunca testei esta ideia.

Podes fazer por script, por exemplo em python... Formas de fazer isto não faltam, a questão que se põe, é a quantidade de dados que vão ser lidos do DB2 e ser inseridos no MySQL e o consumo de recursos que isso vai implicar em ambas as maquinas, para evitares o risco de um crash.

Cordiais cumprimentos,

Apocsantos

  • Vote 1

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites
t0ze

Obrigado apocsantos,

A tabela no lado do AS400 tem cerca de 60000 linhas com 20 campos (texto, datas, numeros).

E o objectivo seria inserir no MySQL os dados "novos" que existem no AS400 e que ainda não estão no MySQL.

Obrigado desde já pelo feedback e pelos cenários possíveis.

Share this post


Link to post
Share on other sites
apocsantos

Boa tarde,

Uma vez que 60.000 linhas com 20 colunas ainda é um volume de dados considerável, penso que uma boa opção passa-se pela realização da "tarefa" numa hora em que tanto o AS/400 como o servidor MySQL tivessem menor fluxo de trabalho. Pensando bem neste assunto, o ideal seria até fazer as coisas de forma "assincrona", para evitar uma sobre-carga em qualquer um dos lados (DB2 / MySQL). Tens suporte para query's assincronas no proprio driver JDBC.

Adicionalmente como pretendes que vá "incrementando" os registos do lado do MySQL, podes sempre utilizar um "cron-job" para executar a query ao DB2 receber a resultset e inseri-la no MySQL.

Pessoalmente eu faria isto com Java, por uma questão simples de estar habituado, mas tendo em conta o volume de dados, penso que possas e devas considerar outras linguagens com que te sintas mais confortável. Python seria uma opção, por exemplo, uma vez que tem bom suporte para DB2 e para MySQL e caso precises de fazer "transformação" dos dados podes sempre usar XSLT para o fazer.

Cordiais cumprimentos,

Apocsantos

  • Vote 1

"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites
M6

Estou plenamente de acordo com o apocsantos, uma aplicação Java ou uma ferramenta de ETL para fazer isso é o melhor.

Aconselho o JTOpen como driver de JDBC e, se se optar por uma ferramenta de ETL, aconselho o Pentaho, na sua versão open source, o Kettle.

  • Vote 2

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.