Ver Mensaje Individual
  #3 (permalink)  
Antiguo 07/06/2018, 01:46
mensajeescrito
 
Fecha de Ingreso: mayo-2012
Mensajes: 760
Antigüedad: 11 años, 11 meses
Puntos: 5
Respuesta: exportar tabla con extension sql de una msql server usando un script en ph

Gracias ArturoGallegos, pero el script que dices es muy parecido al que he puesto yo.

Y en base al que he puesto he intentado a adaptarlo a "sql server".

explicare detalladamente lo que me ocurre:

Me han dado las claves para poder solo leer el contenido de una tabla que está en una base de datos sql server.

Y lo que necesito es poder conectarme a la base de datos (que eso si lo he conseguido hacer). Y posteriormente a conectarme debo exportar la tabla a la cual me han dado acceso y exportarla en formato .sql a mi ordenador.

Dicho esto este es el codigo que tengo para ello y que no me funciona para variar.

gracias de antemano:

Clase que conecta a BBDD sql server (Esta clase, sí conecta a la bbdd):

Código PHP:
Ver original
  1. class pom
  2.  
  3.         {
  4.             function pim ()
  5.  
  6.                 {
  7.                     $serverName = "123.456.789.101,1433"; //serverName\instanceName
  8.                     $connectionInfo = array( "Database"=>"Nombre BBDD", "UID"=>"NombreUsuario", "PWD"=>"123456789");
  9.                     $link = sqlsrv_connect($serverName, $connectionInfo);
  10.  
  11.  
  12.  
  13.                     //Compruebo la conexión
  14.  
  15.                     if( $link )
  16.  
  17.                         {
  18.                              echo "Conexión establecida.<br />";
  19.  
  20.                              //return $link;
  21.                         }
  22.  
  23.                         else
  24.  
  25.                         {
  26.                              echo "Conexión no se pudo establecer.<br />";
  27.                              die( print_r( sqlsrv_errors(), true));
  28.                         }
  29.                 }
  30.         }
  31.  
  32.  
  33.  
  34.     $pom = new pom();
  35.  
  36.     $pom->pim();



Clase que intenta sin exito exportar la tabla a formato .sql a mi ordenador:

Código PHP:
Ver original
  1. class exportarImportar
  2.        
  3.         {
  4.  
  5. //EXPORTAR TABLA.SQL DE LA  BBDD 1
  6.  
  7.             public function exportar($link, $tablas) // $tablas = '*'
  8.  
  9.                 {  
  10.                     //Declaro las variables necesarias
  11.                    
  12.                     $tabla = '';
  13.                    
  14.                     $salida = '';
  15.                
  16.                
  17.                
  18.                     //Consigo las tablas necesarias
  19.                    
  20.                     if($tablas == '*')
  21.                    
  22.                         {
  23.                             $tablas = array();
  24.                            
  25.                             $resultado = $link->mssql_query("SHOW TABLES");
  26.                            
  27.                            
  28.                            
  29.                             while($fila = $resultado->mssql_fetch_row())
  30.                            
  31.                                 {
  32.                                     $tablas[] = $fila[0];
  33.                                 }
  34.                         }
  35.                    
  36.                         else
  37.                        
  38.                         {
  39.                             $tablas = is_array($tablas)?$tablas:explode(',',$tablas);
  40.                         }
  41.                
  42.                
  43.                
  44.                     //Hago un recorrido
  45.                    
  46.                     foreach($tablas as $tabla)
  47.                    
  48.                         {
  49.                             $resultado = $link->mssql_query("SELECT * FROM " . $tabla);
  50.                            
  51.                             $numColumnas = $resultado->field_count;
  52.                    
  53.                             //$salida .= "DROP TABLE " . $tabla;
  54.                    
  55.                             $resultadoDos = $link->mssql_query("SHOW CREATE TABLE " . $tabla);
  56.                            
  57.                             $filaDos = $resultadoDos->mssql_fetch_row();
  58.                    
  59.                             $salida .= "\n\n".$filaDos[1].";\n\n";
  60.                    
  61.                    
  62.                    
  63.                             for($i = 0; $i < $numColumnas; $i++)
  64.                            
  65.                                 {
  66.                                     while($fila = $resultado->mssql_fetch_row())
  67.                                    
  68.                                         {
  69.                                             $salida .= "INSERT INTO " . $tabla . " VALUES(";
  70.                                            
  71.                                             for($j=0; $j < $numColumnas; $j++)
  72.                                            
  73.                                                 {
  74.                                                     $fila[$j] = addslashes($fila[$j]);
  75.                                                    
  76.                                                     //$fila[$j] = ereg_replace("\n","\\n",$fila[$j]);
  77.                                                     $fila[$j] = preg_replace("/\n/","\\n",$fila[$j]);
  78.  
  79.                                                     if (isset($fila[$j]))
  80.                                                    
  81.                                                         {
  82.                                                             $salida .= '"'.$fila[$j].'"' ;
  83.                                                         }
  84.                                                        
  85.                                                         else
  86.                                                        
  87.                                                         {
  88.                                                             $salida .= '""';
  89.                                                         }
  90.                                                        
  91.                                                                                            
  92.                                                    
  93.                                                     if ($j < ($numColumnas-1))
  94.                                                    
  95.                                                         {
  96.                                                             $salida.= ',';
  97.                                                         }
  98.                                                 }
  99.                                                
  100.                                                
  101.                                                
  102.                                                 $salida .= ");\n";
  103.                                         }
  104.                                 }
  105.                        
  106.                        
  107.                        
  108.                                 $salida .= "\n\n\n";
  109.                         }
  110.                
  111.                
  112.                
  113.                     //Guardo el archivo
  114.                    
  115.                     $referencia = fopen('historial/tabla-backup-'.time().'.sql','w+');
  116.                    
  117.                     fwrite($referencia,$salida);
  118.                    
  119.                     fclose($referencia);
  120.  
  121.                
  122.                 }
  123.  
  124.         }
  125.  
  126.  
  127.  
  128.     $exportarImportar = new exportarImportar();
  129.  
  130.     $exportarImportar->exportar($pom->pim(), 'Empresa$Tarifas Proveedores');