Sistema de respaldo de bases de datos en SQL_Server a archivos .txt
Publicado por Justo Antonio (1 intervención) el 20/09/2018 18:07:18
¡Buen día!
Estoy desarrollando un sistema de respaldos que lea cualquier base de datos en SQL_Server y descargue la información contenida en los campos en un archivo .txt para almacenarlos en la nube y así poder acceder a ellos desde cualquier ubicación.
Para tablas en especifico, de la que conozco su estructura logro el cometido pero para aquellas que no conozco la estructura no logro integrar la lista de los nombres de los campos en la instrucción de selección.
Estoy haciendo algo así:
Si alguien tiene una noción de como puedo resolver esto, les agradecerías.
Estoy desarrollando un sistema de respaldos que lea cualquier base de datos en SQL_Server y descargue la información contenida en los campos en un archivo .txt para almacenarlos en la nube y así poder acceder a ellos desde cualquier ubicación.
Para tablas en especifico, de la que conozco su estructura logro el cometido pero para aquellas que no conozco la estructura no logro integrar la lista de los nombres de los campos en la instrucción de selección.
Estoy haciendo algo así:
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
<?php
//header('Content-Type: text/plain');
//header('Content-Disposition: attachment; filename="generado.txt"');
$ServerName = "nombre del servidor";
$connectionInfo = array("Database"=>"nombre de la base de datos", "UID"=>"nombre del usuario", "PWD"=>"contraseña", "CharacterSet"=>"UTF-8");
$con = sqlsrv_connect($ServerName,$connectionInfo);
$DB = 'nombre de la tabla';
$sql_seleccion = "SELECT * FROM ".$DB;
$lista = '';
if($con){
$sql = "SELECT c.name FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id WHERE t.name = 'SAFACT'";
$sql_cuenta = "SELECT COUNT(*) As Cuenta FROM sys.columns c JOIN sys.tables t ON c.object_id = t.object_id WHERE t.name = 'SAFACT'";
$stmt = sqlsrv_query($con, $sql_cuenta);
if( $stmt === false) {
die(print_r( sqlsrv_errors(), true));
}
while($registros = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)) {
$indice = $registros['Cuenta'];
}
$stmt = sqlsrv_query($con, $sql);
if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}
while($row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)){
foreach($row as $indice=>$valor){
$campo = $row[$indice];
$lista .= '$lista'.'['.chr(39).$campo.chr(39).'],';
//echo $campo.': --> '.$lista.'<br>';
//$seleccion = $campo.$lista;
}
//print_r($lista);
$sql_txt = "SELECT * FROM ".$DB;
$stmt = sqlsrv_query( $con, $sql_txt );
if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}
while($lista = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
print_r($lista); //.chr(13).chr(10)
}
}
$stmt = sqlsrv_query( $con, $sql_seleccion );
if( $stmt === false) {
die( print_r( sqlsrv_errors(), true) );
}
sqlsrv_free_stmt( $stmt);
} else {
echo "¡Fallo en Conexión!";
}
?>
Si alguien tiene una noción de como puedo resolver esto, les agradecerías.
Valora esta pregunta


0