t0ze Posted December 18, 2012 at 12:52 AM Report #487638 Posted December 18, 2012 at 12:52 AM 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...
Rui Carlos Posted December 18, 2012 at 02:25 AM Report #487641 Posted December 18, 2012 at 02:25 AM Outras alternativas incluem pelo menos mais umas quantas linguagens para além do PHP com drivers para ambas as BDs. O SQLyog permite importar dados externos, mas não sei se suporta DB2. 1 Report Rui Carlos Gonçalves
apocsantos Posted December 18, 2012 at 12:12 PM Report #487668 Posted December 18, 2012 at 12:12 PM 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 1 Report "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"
t0ze Posted December 18, 2012 at 01:49 PM Author Report #487683 Posted December 18, 2012 at 01:49 PM 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.
apocsantos Posted December 18, 2012 at 02:42 PM Report #487689 Posted December 18, 2012 at 02:42 PM 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 1 Report "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"
M6 Posted December 26, 2012 at 02:37 PM Report #488438 Posted December 26, 2012 at 02:37 PM 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. 2 Report 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."
t0ze Posted January 7, 2013 at 12:20 PM Author Report #489992 Posted January 7, 2013 at 12:20 PM Obrigado pellos vossos preciosos "inputs", apocsantos e M6, Vou explorar o Kettle.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now