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

 
Vista:

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

Publicado por Sam (185 intervenciones) el 06/06/2018 18:45:51
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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
function exportar($link, $tablas) // $tablas = '*'
{
    //Declaro las variables necesarias
    $tabla = '';
    $salida = '';
 
 
 
    //Consigo las tablas necesarias
 
    if($tablas == '*')
    {
        $tablas = array();
 
        $resultado = $link->query("SHOW TABLES");
 
        while($fila = $resultado->fetch_row())
        {
            $tablas[] = $fila[0];
        }
    }
    else
    {
        $tablas = is_array($tablas)?$tablas:explode(',',$tablas);
    }
 
 
 
    //Hago un recorrido
 
    foreach($tablas as $tabla)
    {
        $resultado = $link->query("SELECT * FROM " . $tabla);
 
        $numColumnas = $resultado->field_count;
 
        //$salida .= "DROP TABLE " . $tabla;
 
        $resultadoDos = $link->query("SHOW CREATE TABLE " . $tabla);
 
        $filaDos = $resultadoDos->fetch_row();
 
        $salida .= "\n\n".$filaDos[1].";\n\n";
 
 
 
        for($i = 0; $i < $numColumnas; $i++)
        {
            while($fila = $resultado->fetch_row())
            {
                $salida .= "INSERT INTO " . $tabla . " VALUES(";
 
                for($j=0; $j < $numColumnas; $j++)
                {
                    $fila[$j] = addslashes($fila[$j]);
 
                    //$fila[$j] = ereg_replace("\n","\\n",$fila[$j]);
                    $fila[$j] = preg_replace("/\n/","\\n",$fila[$j]);
 
                    if (isset($fila[$j]))
                    {
                        $salida .= '"'.$fila[$j].'"' ;
                    }
                    else
                    {
                        $salida .= '""';
                    }
 
                    if ($j < ($numColumnas-1))
                    {
                        $salida.= ',';
                    }
                }
 
                $salida .= ");\n";
            }
        }
 
        $salida .= "\n\n\n";
    }
 
 
    //Guardo el archivo
    $referencia = fopen('historial/tabla-backup-'.time().'.sql','w+');
    fwrite($referencia,$salida);
    fclose($referencia);
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 157
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

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

Publicado por Andres (67 intervenciones) el 06/06/2018 20:06:05
Habría que cambiar el drivers mysql por sqlsrv teniendo en cuenta que la inserción de datos en una sola sentencia SQL es diferente en SQL Server.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

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

Publicado por Sam (185 intervenciones) el 07/06/2018 10:04:32
Gracias Andres, he intentado lo que dices pero no consigo que funcione.

Una mano la agradecería.

Miren este es el codigo y la situacion en la que estoy:

Mi script 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):

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


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

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