Salu2

| |||
EL tema de "respaldar a X tiempo" .. es decir "ejecutar" ese script.php que hagas que va a generar ese archivo de texto plano con la estrucutra que requieres .. lo deberías hacer bajo un "Cron Job" o "programador de taréas" según el S.O. que use tu servidor (Linux/windows respectivamente). Es en ese "Cron Job" o equivalente donde programas la llamada a tu script.php que hagas a los intervalos que definas. Eso es lo mejor e ideal. La "restauración" de esos datos (de tu .sql generado o bien pegando el código en tu textarea) tan sólo implica ejecutar esas consultas SQL que has generado en tu archivo: mysql_query() .. eso sí, recuerda que esa función de Mysql sólo ejecuta una instrucción a la vez .. así que si tienes por ejemplo algo tipo: CREATE table{ }; INSERT .....; INSERT ....; cada ; (punto y coma) separa una instrucción SQL .. la cual deberás indentificar de tu archivo para aplicar un mysql_query() con cada una .. Para esto, .. simplemente lee tu archivo hacia un string (con file() + implode() o bien fgets() ) y luego aplica un explode() al caracter separador ; ) .. como eso te generará un array .. lo lees con un bucle foreach() y aplicas a cada pasada del mismo tu mysql_query() .. Esto sería la alternativa "PHP" puro .. por qué lo ideal es que uses lo que vistes en las FAQs referente al uso de "LOAD ..." de Mysql. Eso es lo más óptimo y rápido .. mucho más que usar toda esa lógica PHP (tal vez tengas hasta problemas con el tiempo de ejecución de tu script . .así que tendrás que user set_time_limit() para darle más tiempo de ejecución al script). De esto y de lo anterior tienes ya scripts ya hecho para tal fin ... buscalos por sitios como www.phpclasses.org o www.hotscripts.com Un saludo, |
| ||||
Que fuera FDW sin vos? Cluster: Gracias por tu respuesta. Cita: cuando me refería a "x tiempo" lo decía de forma manual, o sea, accediendo a través del Sistema de Administración del Portal.EL tema de "respaldar a X tiempo" .. es decir "ejecutar" ese script.php que hagas que va a generar ese archivo de texto plano con la estrucutra que requieres .. lo deberías hacer bajo un "Cron Job" o "programador de taréas" ... Cita: de aquí no entendí mucho. Me explico mejor cuando trato de crear un tabla me da algunos errores. El código SQL lo he tomado del fichero .sql que genero al exportar tablas desde el MySQL Front o el EMS MySQL Manager que son los que más uso. Este es un ejemplo de creación de tablas.La "restauración" de esos datos (de tu .sql generado o bien pegando el código en tu textarea) tan sólo implica ejecutar esas consultas SQL que has generado en tu archivo: mysql_query() .. eso sí, recuerda que esa función de Mysql sólo ejecuta una instrucción a la vez .. así que si tienes por ejemplo algo tipo: CREATE table{ }; INSERT .....; INSERT ....; cada ; (punto y coma) separa una instrucción SQL .. la cual deberás indentificar de tu archivo para aplicar un mysql_query() con cada una .. Para esto, .. simplemente lee tu archivo hacia un string (con file() + implode() o bien fgets() ) y luego aplica un explode() al caracter separador ; ) .. como eso te generará un array .. lo lees con un bucle foreach() y aplicas a cada pasada del mismo tu mysql_query() .. Código PHP: Cita: Esto lo quiero realizar yo para el día de mañana cuando me den un proyecto que deba desarrollar yo al 100% sin hacer uso de cosas ya realizadas entonces no tenga que ponerme a investigar a esas horas como debo hacer las cosas cuando en mi tiempo libre podría haberlo. Creo que fuiste tu mismo el que me dijiste alguna vez "no trates de inventar la rueda cuando ya está inventada, solo trata de hacerle modificaciones o agregarle cosas nuevas" o algo por el estilo. Esto lo tengo muy en cuenta pero me gusta aprender y ya ves que en algo por lo menos he avanzado. Ya no soy aquel que hacía preguntas inútiles de PHP, aunque a veces se me escapa una que otra como la de mover la imagen por ejemplo.De esto y de lo anterior tienes ya scripts ya hecho para tal fin ... buscalos por sitios como www.phpclasses.org o www.hotscripts.com Salu2 ![]() ![]() ![]()
__________________ Ing. Reynier Pérez Mira |
| |||
Ok, .. pues si quieres hacerlo tu mismo ningún problema, ... empezemos por como crear tu ".sql" con la estructura de tu tabla(s) y volcar los datos de estas tablas pero con estructura SQL (Create table, .. .Insert .. etc) que necesitaras. Te animas a empezar tu? Cosas que te harán falta saber: 1) Como obtener el nombre de las tablas de tu BD (bien sea para hacer una cópia de seguridad de toda la BD o incluso para indicar N tablas a "respaldar"). 2) Leer la estructura (campos -"fields") de una tabla (con sus propiedades de los campos. 3) Para el volcado de los datos en si: hacer consultas SQL a tu BD de la forma habitual .. sólo que ahora iras creando "strings" (cadenas) con sintax SQL tipo: INSERT INTO tabla (nombre_campo1,nombre_campo2,etc) VALUES ($row['nombre_campo1],....etc ..) 4) Crear archivos de texto plano (funciones fopen() en modo escritura y fwrite() entre otras ... Por supuesto, el tema se puede simplificar mucho y omitir los pasos 1 y 2 si conoces la estructura de tus tablas a "respaldar" de antemano. Pero .. ya puestos .. podrías hacer un script "genérico" que te servirá para cualquier BD, sólo indicarías la BD o tablas de esta a respaldar. Así te servirá para cualquier proyecto. De hecho como ya te dije todo eso ya está más que reinventado, pero nunca está de más saber como enfrentear un proyecto/problema y resolverlo por uno mismo .. no todo está inventado. Creo que con estas indicaciones ya tienes por donde empezar a trabajar. Todo esto lo puedes ir viendo en www.php.net/mysql .. de todo esto tienes funciones para hacerlo y ejemplos en los comentarios de los usuarios. Un saludo, Última edición por Cluster; 20/10/2004 a las 05:48 |
| ||||
Vamos alla entonces Voy para ti: Cita: He realizado está función para eso y me funciona a la perfección, este es mi archivo config.inc.php que es donde incluyo todas las configuraciones:Como obtener el nombre de las tablas de tu BD (bien sea para hacer una cópia de seguridad de toda la BD o incluso para indicar N tablas a "respaldar"). Código PHP: Código PHP: Cita: no lo he implementado todavía pero ha de ser con la función mysql_list_fieldsLeer la estructura (campos -"fields") de una tabla (con sus propiedades de los campos. (corrígeme si me equivoco). Cita: aquí deberás ayudarme un poco pero creo saber de que me hablas.Para el volcado de los datos en si: hacer consultas SQL a tu BD de la forma habitual .. sólo que ahora iras creando "strings" (cadenas) con sintax SQL tipo: INSERT INTO tabla (nombre_campo1,nombre_campo2,etc) VALUES ($row['nombre_campo1],....etc ..) Cita: esto lo he hecho otra veces así que no me será díficil hacerlo de nuevo. De hecho en el Portal que estoy creando creo ficheros XML de esta forma.Crear archivos de texto plano (funciones fopen() en modo escritura y fwrite() entre otras ... Tu me dices que es lo que sigue. Salu2 ![]() ![]()
__________________ Ing. Reynier Pérez Mira |
| |||
Pues .. te faltaría las tablas (nombres de estas) para luego obtener su estructura principalmente .. por qué "normalmente" no creas ".sql" con instrucciones de crear la BD (por qué muchas veces topas con un servicio de hosting que sólo te ofrece una BD de nombre fijo y no puedes crear más .. por ejemplo). Para listar las tablas que tienes: mysql_list_tables() .. y luego el _fields a esas tablas que obtendrás para ver sus campos y estructura .. En ese "bucle" que vas a usar para listar esas tablas será donde tendrás que ir viendo ya como dar "forma" a la línea que vas a ir generando en tu archivo de texto plano que vas a crear. Para eso tienes que conocer bien la sintax SQL de creación de una tabla para seguirla y respetarla a la hora de componer esa "cadena" (string) que para el caso es lo que es para PHP en ese punto. (http://dev.mysql.com/doc/mysql/en/CREATE_TABLE.html) Algo tipo: Código PHP: Algo similar será para el "volcado de datos" generando en su lugar sentencias "INSERT INTO ....." y teniendo en cuenta que el separador de instrucciones SQL es el ; Para generar el archivo .. usas fopen() ... y fwrite($fp,$slq) ... + los fclose() que corresponden ... (más info: www.php.net/fwrite). Recuerda que el salto de línea para un archivo de texto plano es \n (o \r\n o \r dependiendo del S.O. que lo lea). Un saludo, Última edición por Cluster; 20/10/2004 a las 10:33 |
| ||||
Mira esto Esto es lo que he logrado hasta ahora Cluster: Código PHP: Cita: pero no se como concatenar la consulta y tampoco se como coger si el campo es NOT NULL, AUTOINCREMENT y esas propiedades específicas.administradores Name: idusr Type: int Lenght: 6 Name: nombre Type: string Lenght: 25 Name: correo Type: string Lenght: 250 Name: login Type: string Lenght: 200 Name: passwd Type: blob Lenght: 255 Name: level Type: int Lenght: 3 Name: feadministradores Name: idusr Type: int Lenght: 6 Name: nombre Type: string Lenght: 25 Name: correo Type: string Lenght: 250 Name: login Type: string Lenght: 200 Name: passwd Type: blob Lenght: 255 Name: level Type: int Lenght: 3 Name: fecha_registro Type: datetime Lenght: 19 Name: ultima_visita Type: datetime Lenght: 19 Name: sessionid Type: string Lenght: 255 Name: activo Type: int Lenght: 1 menu Name: idmenu Type: int Lenght: 6 Name: idioma Type: int Lenght: 1 Name: titulo Type: string Lenght: 50 Name: span Type: string Lenght: 250 Name: direccion Type: string Lenght: 250 Name: tipo Type: int Lenght: 1 Name: orden Type: int Lenght: 3 Name: activo Type: int Lenght: 1 usuarios Name: idusr Type: int Lenght: 6 Name: nombre Type: string Lenght: 25 Name: correo Type: string Lenght: 250 Name: login Type: string Lenght: 200 Name: passwd Type: blob Lenght: 255 Name: level Type: int Lenght: 3 Name: fecha_registro Type: datetime Lenght: 19 Name: ultima_visita Type: datetime Lenght: 19 Name: sessionid Type: string Lenght: 255 Name: activo Type: int Lenght: 1 cha_registro Type: datetime Lenght: 19 Name: ultima_visita Type: datetime Lenght: 19 Name: sessionid Type: string Lenght: 255 Name: activo Type: int Lenght: 1 menu Name: idmenu Type: int Lenght: 6 Name: idioma Type: int Lenght: 1 Name: titulo Type: string Lenght: 50 Name: span Type: string Lenght: 250 Name: direccion Type: string Lenght: 250 Name: tipo Type: int Lenght: 1 Name: orden Type: int Lenght: 3 Name: activo Type: int Lenght: 1 usuarios Name: idusr Type: int Lenght: 6 Name: nombre Type: string Lenght: 25 Name: correo Type: string Lenght: 250 Name: login Type: string Lenght: 200 Name: passwd Type: blob Lenght: 255 Name: level Type: int Lenght: 3 Name: fecha_registro Type: datetime Lenght: 19 Name: ultima_visita Type: datetime Lenght: 19 Name: sessionid Type: string Lenght: 255 Name: activo Type: int Lenght: 1 Salu2 ![]()
__________________ Ing. Reynier Pérez Mira |
| |||
Para "concatenar" .. tan sólo respeta la sintax SQL del "CREATE" ... algo tipo (si quieres usra: mysql_field_name($result,$i) aunque podrías usar $columnes[0] .. $columnes[1] .. etc que corresponden al "nombre" del campo, el "tipo" .. la "logintud" .. etc ... Código PHP: Cita: Ahí ya no sé .. (no he investigado más el tema) .. Lo único que puedo comentarte es que hay funciones SQL de la gama: SHOW .. SHOW Tables .. etc .. que creo que puedes obtener más información que la que tal vez entrege PHP con sus mysql_list_.. y demás.pero no se como concatenar la consulta y tampoco se como coger si el campo es NOT NULL, AUTOINCREMENT y esas propiedades específicas Por lo demás .. podrías investigar el código de phpMyadmin (www.phpmyadmin.net) para ver como trabaja ese tema puntual. Un saludo, |