Foros del Web » Programando para Internet » PHP »

exportar tabla con extension sql de una msql server usando un script en php

Estas en el tema de exportar tabla con extension sql de una msql server usando un script en php en el foro de PHP en Foros del Web. Hola buenas amigas y amigos, verán llevo toda la tarde buscando y programando y nada que no hay manera. Lo que estoy intentando es conectarme ...
  #1 (permalink)  
Antiguo 06/06/2018, 10:34
 
Fecha de Ingreso: mayo-2012
Mensajes: 708
Antigüedad: 6 años, 2 meses
Puntos: 5
exportar tabla con extension sql de una msql server usando un script en php

Hola buenas amigas y amigos, verán llevo toda la tarde buscando y programando y nada que no hay manera.

Lo que estoy intentando es conectarme a una bbdd sql server y una vez hecho eso

entonces exportar una tabla de esa base de datos pero exportarla en extension

.sql para poder ser tratada.

Esta exportacion a formato .sql debe ser mediante un script hecho en php que no

consigo que funcione.

De todos modos pongo a continuacion el script que tengo pero para mysql, no para sql server que es lo que necesito , por si alguien sabria que hacerle por que yo ya no se como seguir , grancias de antemano.


Código PHP:
Ver original
  1. function exportar($link, $tablas) // $tablas = '*'
  2.  
  3.                 {  
  4.                     //Declaro las variables necesarias
  5.                    
  6.                     $tabla = '';
  7.                    
  8.                     $salida = '';
  9.                
  10.                
  11.                
  12.                     //Consigo las tablas necesarias
  13.                    
  14.                     if($tablas == '*')
  15.                    
  16.                         {
  17.                             $tablas = array();
  18.                            
  19.                             $resultado = $link->query("SHOW TABLES");
  20.                            
  21.                            
  22.                            
  23.                             while($fila = $resultado->fetch_row())
  24.                            
  25.                                 {
  26.                                     $tablas[] = $fila[0];
  27.                                 }
  28.                         }
  29.                    
  30.                         else
  31.                        
  32.                         {
  33.                             $tablas = is_array($tablas)?$tablas:explode(',',$tablas);
  34.                         }
  35.                
  36.                
  37.                
  38.                     //Hago un recorrido
  39.                    
  40.                     foreach($tablas as $tabla)
  41.                    
  42.                         {
  43.                             $resultado = $link->query("SELECT * FROM " . $tabla);
  44.                            
  45.                             $numColumnas = $resultado->field_count;
  46.                    
  47.                             //$salida .= "DROP TABLE " . $tabla;
  48.                    
  49.                             $resultadoDos = $link->query("SHOW CREATE TABLE " . $tabla);
  50.                            
  51.                             $filaDos = $resultadoDos->fetch_row();
  52.                    
  53.                             $salida .= "\n\n".$filaDos[1].";\n\n";
  54.                    
  55.                    
  56.                    
  57.                             for($i = 0; $i < $numColumnas; $i++)
  58.                            
  59.                                 {
  60.                                     while($fila = $resultado->fetch_row())
  61.                                    
  62.                                         {
  63.                                             $salida .= "INSERT INTO " . $tabla . " VALUES(";
  64.                                            
  65.                                             for($j=0; $j < $numColumnas; $j++)
  66.                                            
  67.                                                 {
  68.                                                     $fila[$j] = addslashes($fila[$j]);
  69.                                                    
  70.                                                     //$fila[$j] = ereg_replace("\n","\\n",$fila[$j]);
  71.                                                     $fila[$j] = preg_replace("/\n/","\\n",$fila[$j]);
  72.  
  73.                                                     if (isset($fila[$j]))
  74.                                                    
  75.                                                         {
  76.                                                             $salida .= '"'.$fila[$j].'"' ;
  77.                                                         }
  78.                                                        
  79.                                                         else
  80.                                                        
  81.                                                         {
  82.                                                             $salida .= '""';
  83.                                                         }
  84.                                                        
  85.                                                                                            
  86.                                                    
  87.                                                     if ($j < ($numColumnas-1))
  88.                                                    
  89.                                                         {
  90.                                                             $salida.= ',';
  91.                                                         }
  92.                                                 }
  93.                                                
  94.                                                
  95.                                                
  96.                                                 $salida .= ");\n";
  97.                                         }
  98.                                 }
  99.                        
  100.                        
  101.                        
  102.                                 $salida .= "\n\n\n";
  103.                         }
  104.                
  105.                
  106.                
  107.                     //Guardo el archivo
  108.                    
  109.                     $referencia = fopen('historial/tabla-backup-'.time().'.sql','w+');
  110.                    
  111.                     fwrite($referencia,$salida);
  112.                    
  113.                     fclose($referencia);
  114.  
  115.                
  116.                 }
  #2 (permalink)  
Antiguo 06/06/2018, 11:45
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.055
Antigüedad: 10 años, 4 meses
Puntos: 982
Respuesta: exportar tabla con extension sql de una msql server usando un script en ph

Usa este script, hace mucho que lo vengo usando sin problemas... el único inconveniente que he tenido ha sido con tablas bastante grandes

https://bitbucket.org/snippets/artur...L/db-expot-php
__________________
Toda ayuda se proporciona exclusivamente en el foro, no skype, no mensajes privados u otro medio....
  #3 (permalink)  
Antiguo 07/06/2018, 01:46
 
Fecha de Ingreso: mayo-2012
Mensajes: 708
Antigüedad: 6 años, 2 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');
  #4 (permalink)  
Antiguo 09/06/2018, 08:32
 
Fecha de Ingreso: mayo-2012
Mensajes: 708
Antigüedad: 6 años, 2 meses
Puntos: 5
Respuesta: exportar tabla con extension sql de una msql server usando un script en ph

Con este código soy capaz de exportar una tabla a formato .sql a un directorio pero en mysqli pero no me funciona con sqlsrv.
Y no entiendo por que.
Si me pudieran ayudar le estaría muy agradecido.



La zona horaria es GMT -6. Ahora son las 01:41.