1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Copiar linha de uma tabela para outra em BD diferenets

Discussão em 'Web Development' iniciada por Duke, 16 de Dezembro de 2006. (Respostas: 9; Visualizações: 2640)

  1. Duke

    Duke Power Member

    Olá pessoal!

    Pois é, tou com um pequeno problema. Então é assim:

    Tenho uma Tabela A (T_A) numa Base de Dados A (BD_A) e uma Tabela B (T_B) numa outra Base de Dados B (BD_B) ambas no mesmo servidor e quero copiar uma linha da T_A para a T_B. Qual a maneira mais eficiente?

    As BDs são MySQL e tou a programar em PHP.

    Obrigado []
     
  2. keoshi

    keoshi Power Member

    Exporta secções (o que interessar) através do PHPMyAdmin e importa na outra BD.
     
  3. Duke

    Duke Power Member

    Essa solução não me serve :(. Esta operação é para ser feita quando eu der um comando via web. Fiz-me entender?

    De qq das maneiras obrigado ;)
     
  4. Mitnick

    Mitnick Power Member

    Podes sempre fazer duas conexoes a bases de dados difrentes... guardas a linha da primeira base de dados num array, e depois quando conectares a segunda base dados inseres a informacao que esta no array dentro da base de dados.
     
  5. Duke

    Duke Power Member

    Isso era aquilo em q eu estava a pensar. A minha dúvida e daí ter criado esta thread é saber se uma vez realizada a query (SELECT) terei q guardar cada um dos campos numa variável de modo a fazer o INSERT.
     
  6. SoundSurfer

    SoundSurfer Power Member

    Não sei como é no MySQL, mas penso que no SQL Server podes referir tabelas em BDs diferentes, colocando atrás do nome da tabela o nome da base de dados, ex:

    Select * FROM [BDa].tabelaA inner join [DBb].tabelaB on ....
     
  7. Mitnick

    Mitnick Power Member

    No mySQL nao existe joins...

    Sim, depois do SELECT tens de guardar os campos em variaveis ou num array.
     
  8. HecKel

    HecKel The WORM

    Olhe que não, olhe que não....


    http://www.keithjbrown.co.uk/vworks/mysql/mysql_p5.php

    Os joins fazem parte do SQL default, alguns SGDBs têm alguns extras, mas não descartam os defaults. Por exemplo, o Oracle tem a opção do
    Código:
    create or replace view xpto as ....
    enquanto que no SQL default não existe o replace, terias de fazer o drop primeiro :)

    abraços, HecKel
     
  9. Mitnick

    Mitnick Power Member

    Thanks HecKel.. desconhecia... Peco desculpa por ter induzido em erro com a minha resposta.
     
  10. Duke

    Duke Power Member

    Pessoal, será q desta maneira é suposto dar? N sei o q meter na mysql_query() onde estão os ???.Já experimentei com $conn e $conn2 e nada. Alguma ideia?O q é q estou a fazer mal?

    Código:
    <?php
       
    	$conn = mysql_connect('localhost', 'user', 'pass') or die(mysql_error());
    	
    	if(!mysql_select_db("BD_A", $conn))
    		die (mysql_error());
    	
    	$conn2 = mysql_connect('localhost', 'user', 'pass') or die(mysql_error());
    	
    	if(!mysql_select_db("BD_B", $conn2))
    		die (mysql_error());
    	
    	$query = "INSERT INTO BD_B.T_B (T_B.marca,T_B.modelo) 
                          SELECT (BD_A.MARCA,BD_A.MODELO) 
                          FROM BD_A.T_A WHERE ID='3'";
            
            mysql_query($query,???);
    
    	mysql_close($conn);
    	mysql_close($conn2);
    
    ?> 
     

Partilhar esta Página