![]() |
FAQ de Base de Datos (BBDD) FAQs de Base de Datos En varios subforos ya lo hicieron, así que por aquí también debemos hacerlo... Espero la colaboracion de todos los expertos: Por el momento solo he subido unos cuantos de Oracle pero espero la ayuda de todos ustedes. Faq de Oracle (por el momento) :pensando: :arriba: :arriba: Espero sus aportaciones |
BD: PostgreSQL Pregunta: ¿Existen controladores ODBC para PostgreSQL? Respuesta: Hay dos controladores ODBC disponibles, PostODBC y OpenLink ODBC. PostODBC se incluye con la distribución (http://www.insightdist.com/psqlodbc) OpenLink ODBC puede encontrarse en http://www.openlinksw.com/. Funciona con los programas clientes ODBC, por lo que puede tener disponible un driver ODBC para PostgreSQL ODBC para cualquier plataforma cliente (Win, Mac, Unix, VMS). |
BD: PostgreSQL Pregunta: ¿Que herramientas hay disponibles para conectar PostgreSQL con páginas Web? Respuesta: Para integración con Web, PHP es una excelente interfase (http://www.php.net/) |
BD: PostgreSQL Pregunta: Al iniciar postmaster, genera un error IpcMemoryCreate errors3 Respuesta: Es necesario agrandar la memoria compartida disponible en el núcleo. La cantidad exacta que se necesita depende de lau arquitectura y de cuantos buffers y procesos backend se configuren para ejecutar postmaster. Para muchos sistemas, con el número por defecto de buffers y procesos, necesitas un mínimo de 1MB. APORTADO POR: Bruce Momjian |
BD: PostgreSQL Pregunta: ¿Qué son los ficheros pg_psort.XXX en mi directorio de base de datos? Respuesta: Hay ficheros temporales generados por el ejecutor de consultas. Por ejemplo, si una ordenación necesita para realizarse satisfacer un ORDER BY, y la ordenación requiere más espacio del que el parámetro -S permite, entonces los ficheros temporales son creados para contener los datos extras. Los ficheros temporales se deberían borrar automáticamente, pero podría ser que no si durante una ordenación el proceso falla. Si no hay transacciones ejecutándose en este mismo momento, es seguro borrar los ficheros pg_tempNNN.NN. |
BD: PostgreSQL Pregunta: ¿Cómo crear un campo serial/autoincremento? Respuesta: PostgreSQL soporta tipos de datos SERIAL. Automáticamente crea una secuencia e índice en la columna. Por ejemplo, esto... CREATE TABLE person ( id SERIAL, name TEXT ); CREATE SEQUENCE person_id_seq; CREATE TABLE person ( id INT4 NOT NULL DEFAULT nextval('person_id_seq'), name TEXT ); CREATE UNIQUE INDEX person_id_key ON person ( id ); |
BD: Oracle 9i Pregunta: ¿Como respaldo mis Datos ? Respuesta: Crea un EXPORT de dichos datos.. Ej: EXP system/mipassword@mibase file=expdtos.dmp log=expdtos.log owner=usuario grants=y indexes=y rows=y triggers=y constraints=y donde mipassword=es la contraseña asignado al Administrador de la base de Datos mibase= Nombre asignado de la BD expdtos.dmp= Nombre que deseas hacer para el export exdtos.log= Define el script del export usuario= Esquema a resguardar Si desea hacer un respaldo completo de toda la base de datos y no solamente de un esquema especifico cambiar la sintaxis "owner-usuario" por "full" |
BD: Oracle 9i Pregunta: ¿Como Determino las lectura/escritura de la BD? Respuesta: Ejecuta la siguiente sintaxis: SELECT substr(name,1,7) Nombre, sum(Phyrds) Lectura, sum(Phywrts) Escritura, sum(phyrds) + sum(phywrts) Total FROM v$datafile df, v$filestat fs WHERE df.file# = fs.file# GROUP by substr(name,1,7) / NOTA: Esta consulta utiliza V$filestat que es un objeto dinámico cuyos valores se ponen a cero cuando la base de datos es desmontada y restaurada nuevamente. |
BD: Oracle 9i Pregunta: Compilar objetos invalidos Respuesta: levantar una sesion de PLus y conectarse con el Owner propietario de los objetos: set head off set pagesize 0 set echo off set verify off set feedback off set termout off spool recomp_objects.sql select 'alter '|| decode(object_type, 'PACKAGE BODY', 'PACKAGE', object_type) || ' ' || owner||'.'|| object_name||' compile' || decode(object_type, 'PACKAGE BODY', ' BODY') || ';' from dba_objects where status = 'INVALID' and object_type in ( 'PACKAGE', 'PACKAGE BODY', 'PROCEDURE', 'VIEW', 'TRIGGER' ) / spool off set feedback on set echo on set termout on @recomp_objects.sql spool off |
¿Cómo crear un campo serial/autoincremento? BD: MySQL Respuesta: Create table tablaEjemplo(campo_id int not null auto_increment... primary key(campo_id)) BD: SQLServer Respuesta: Create table tabla_ejemplo(campo_id int identity... primary key(campo_id)) |
Tema: MySQL Pregunta: ¿Cómo era la sintaxis del comando SELECT? ¿Como tenía que poner el ORDER BY? ... Respuesta: Para aprender y recordar la sintaxis soportada por MySQL, así como los comandos, las funciones, los tipos de tabla, tipos de bases de datos, etc. hay que consultar el manual de MySQL |
Tema: MySQL Pregunta: ¿Como hago para ver si tengo registros repetidos en una tabla? Respuesta: Código: SELECT campo,Count(campo) FROM tabla GROUP BY campo HAVING Count(campo) > 1 |
Tema: MySQL Pregunta: ¿Cómo selecciono un registro al azar? Respuesta: Código: SELECT campos FROM tabla ORDER BY Rand() LIMIT 1 |
BD: Interbase Pregunta: ¿Cómo obtengo la fecha del sistema con Interbase? Respuesta: Consulta SELECT current_time FROM RDB$Database Resultado 10:55:00 Consulta SELECT current_date FROM RDB$Database ó SELECT cast('TODAY' as date) FROM RDB$Database ó SELECT cast('now' as date) FROM RDB$Database Resultado 26/11/2002 Consulta SELECT current_timestamp FROM RDB$Database Resultado 26/11/2002 10:56:18 APORTADO POR: mauriciolangea |
Interbase Tema: Interbase Pregunta: ¿Como concateno con Interbase? Respuesta: SELECT CAMPO1||' '||CAMPO2||' '||CAMPO3 FROM TABLAX |
BD: MySQL Pregunta: ¿Porqué no pasan las variables por la URL? Respuesta: Uno de los problemas más frecuentes últimamente es que muchos usuarios no consiguen pasar las variables de una página a otra. El motivo más frecuente es que la opción "register globals" esté desactivada en la configuración de php. Por problemas de seguridad, a partir de la versión php 4.2 esta opción viene desactivada en la opción por defecto. Así que la manera "tradicional" de pasar variables ya no funciona y hay que utilizar el nuevo estándar. Si éste es tu problema, tienes dos opciones a) activar register_globals (no recomendado por los gurús) b) Seguir el nuevo standard, en el que hay que utilizar $_GET[$variable] para recoger las variables. Así un ejemplo: Archivo 1º hola.html <a href="hola2.php?nombre=tomatoma"> Archivo 2º hola.php $nombre = $_GET[$nombre]; echo $nombre; |
BD: MySQL Pregunta: ¿Cuando lanzo una query con PHP ¿Cómo evito los mensajes de error por defecto de Mysql? Respuesta: Antes de la función añade una arroba: Ejemplo: @mysql_query($sql); |
BD: MySQL Pregunta: ¿Como consigo que MySQL me devuelva los registros en orden inverso al que fueron insertados? Respuesta: Añadiendo un ORDER BY DESC Código PHP: |
BD: MySQL Pregunta: ¿Cómo limito el número de registros que me devuelve mysql? Respuesta: Utilizando LIMIT Ejemplo: SELECT * FROM nombre_tabla ORDER BY nombre_columna DESC LIMIT n; Para conseguir los siguientes 5 SELECT * FROM nombre_tabla ORDER BY nombre_columna DESC LIMIT m, n; Con esto especificas que te devuelva n registros empezando desde el registro m. |
BD: Oracle 9i Pregunta: Como importar datos desde un archivo de texto Respuesta: LOAD DATA INFILE * INTO TABLE aqui_la_tabla APPEND FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED '"' TRAILING NULLCOLS (nombre, apellido, nacimiento date(10) 'MM/DD/YYYY') BEGINDATA JUAN JOSE|MENDEZ|15/08/1970 MARIA|HERNANDEZ|30/06/1945 EN DONDE: Aqui_la_tabla: es la tabla donde deseas importar los datos. nombre,apellido, nacimiento: los campos que vas a insertar. este archivo lo guardas con una extension CTL y luego desde <oracle_home>\bin tecleas lo siguiente: sqlldr miusuario/mipasword@mibase personas.ctl rows=10 errors=30000 en donde: miusuario: Usuario de la Instancia mipassword: Password asignado mibase: Nombre de la base de Datos que estas utilizando personas.ctl: nombre que le diste al archivo que antes era .txt rows=10 : Significa que cada 10 registros ira haciendo COMMIT errors=30000 : Significa el numero de errores que te puede soportar Esto te generara dos archivos... uno .log y uno .bad ... El primero te muestra si se migraron bien o no los datos y el segundo te muestra los archivos que no fueron insertados en la base de datos y te muestra ademas cual fue el error. NOTA: En este caso los archivos los tengo separados por "|"... si tu los tienes separados por "," o por un tabulador u otro caracter especial tienes que decirle en la parte FIELDS TERMINATED BY '|' OPTIONALLY |
BD: Oracle 9i Pregunta: Como determinar si un BLOB se encuentra vacio u ocupado Respuesta: Puedes crear un procedimiento y ejecutarlo desde una sesion de PLUS PROCEDURE Blob_Size (myC1 in varchar2) IS b_LOB1 BLOB; bSize NUMBER; CURSOR Cs1 IS SELECT cml_archivo FROM mitabla WHERE campo1= myC1; BEGIN OPEN cs1; Fetch Cs1 INTO b_LOB1; bSize := DBMS_LOB.GetLength(b_LOB1); DBMS_OUTPUT.PUT_LINE(bSize); END; |
BD: MySQL Pregunta: ¿Cómo puedo concatenar valores en SELECT, INSERT, UPDATE...? RESPUESTA Usando Concat(valor1, valor2..., valorN) Puedes concatenar los valores contenidos en campos: SELECT CONCAT(campo1, campo2) as texto FROM tabla Concatenar textos: SELECT CONCAT("H", "o", "l", "a") as Hola Y concatenar valores contenidos en campos y textos: SELECT CONCAT(campo1, " y ", campo2) FROM tabla |
BD: MySQL Pregunta: ¿Como selecciono partes de un campo? Respuesta: Usando SUSBTRING(), LEFT() y RIGHT(). Que queremos seleccionar el principio del campo: SELECT RIGHT(fecha, 10) FROM tabla > 2002-11-26 Que queremos seleccionar el final del campo: SELECT LEFT(fecha, 8) FROM tabla |
BD: MySQL Pregunta: ¿Cómo puedo contar registros? Respuesta Usando Count(). Esto nos puede servir para saber cuantos registros hay en una tabla: SELECT Count(*) FROM tabla Para saber cuantos registros hay en una tabla que cumplan una condicion: SELECT Count(*) FROM tabla WHERE campo LIKE '%hola%' Para contar los registros que hemos agrupado usando GROUP BY: SELECT Day(fecha) as dia,Count(fecha) FROM tabla GROUP BY dia > 1| 4 > 2| 3 > 3| 14 > 4| 5 |
Interbase Tema: Interbase Pregunta: ¿Como se usa la función extract? Respuesta: El operador EXTRACT te permite la devolución de diferentes partes de un valor TIMESTAMP. El operador EXTRACT no hace distinción entre dialectos cuando está formateando o devolviendo la información. select extract (year from timestamp_fld) from table_name; ======= 1999 select extract (year from timestamp_fld) from table_name; ======= 1999 select extract (month from timestamp_fld) from table_name; ======= 6 select extract (day from timestamp_fld) from table_name; ======= 25 select extract (minute from timestamp_fld) from table_name; ======= 24 select extract (second from timestamp_fld) from table_name; ============ 35.0000 select extract (weekday from timestamp_fld) from table_name; ======= 5 select extract (yearday from timestamp_fld) from table_name; ======= 175 select extract (month from timestamp_fld) || '-' || extract (day from timestamp_fld) || '-' || extract (year from timestamp_fld) from table_name; ==================== 6-25-1999 |
BD: MySQL Pregunta: ¿Cómo recupero el valor más alto (o más bajo) de un campo? Respuesta: Usando Max() o Min() Temos la siguiente tabla: id | Nombre 1 | Juan 2 | Alberto 3 | Pedro 4 | María 5 | Paco 6 | Isabel 7 | Jorge SELECT Max(id) FROM tabla > 7 SELECT Min(id) FROM tabla > 1 |
Interbase Tema: Easysoft ODBC para Interbase Pregunta: Como me conecto a un servidor Interbase remoto vía TCP? Respuesta En la configuración DSN incluye el nombre de la máquina, por ejemplo: nombre_maquina:c:\ruta\al\archivo\basedato.gdb También puedes colocar la dirección IP de la máquina, ejemplo: ip_maquina:c:\ruta\al\archivo\basedato.gdb |
Interbase Tema : Interbase Pregunta : ¿Como evito la corrupción de datos en la versión de Interbase para Windows? Respuesta : Para evitar que tu base de datos InterBase o FireBird se corrompa al resetearse tu computador o al interrupirse inesperadamente el fluido eléctrico en cualquier ambiente Windows (desde Win95 hasta WinXP), debes configurar el modo de escritura de InterBase a Modo Sincrónico. ¿Que quiere decir esto? muy fácil, InterBase utiliza para escribir los cambios realizados en la base de datos 2 modos de escritura: Asincróico y Sincrónico. El Modo Asincrónico escribe los cambios realizados en tu base de datos en un bufer y es el sistema operativo quien decide cuando lo volca a disco, a diferencia de este modo, el modo "Sincrónico" escribe de una vez al disco y evita pasar por el bufer del sistema operativo. El error que devuelve InterBase al dañarse un archivo de Interbase es el Siguiente: Error - I/O error for file "C:\test\test.gdb" Error while trying to open file unknown Win32 error 3 Para evitar este error debes configurar tu base de datos a modo de escritura "Sincrónico" utilizando el comando de consola GFIX: gfix -write sync -user sysdba -password masterkey c:\test\test.gdb Cabe señalar, que esto equivale a colocar el comando Forced Write como Enabled o "ON" en IBConsole o en IBExpert. |
Interbase Tema : Interbase Pregunta : ¿Porqué en Windows Me y XP Interbase funciona lento? Bueno, los archivos *.gdb están incluidos en una lista denominada filelist.xml. Esta lista pertenece a un sistema denominado SFP o "System File Protection" y al SR o "System Restore". Es debido a ésto que cada vez que te conectas a una base de datos InterBase, el SFP hace una copia de seguridad del fichero *.gdb. Imagina esto en una base de datos de 100Mb o más. Para evitar esto, se aconseja cambiar la extensión de tú base de datos a *.fdb para FireBird u otra extensión para InterBase, se podría utilizar la extensión *.mdf de MS-SQLServer para asegurar que no van a haber problemas con extensiones. Tamboén se podría colocar la Base de Datos con extensión *.gdb en la carpeta "Mis Documentos", ya que ahí no llega el SFP. |
Interbase Tema : Interbase Pregunta : ¿Como conecto ASP con Interbase? Respuesta Lo primero que debes hacer (Asumiendo que tienes instalado el driver ODBC de Easysoft) es agregar en el archivo GLOBAL.ASA, la siguiente línea ... Application("ConexionInterbase") = "{DRIVER=Easysoft IB6 ODBC;DSN=employee;UID=sysdba;PWD=masterkey;" Después crea una página EMPLOYEE.ASP y agregale el siguiente código ... <% set oConn = Server.CreateObject("ADODB.Connection") oConn.Open Application("ConexionInterbase") Set rs = Server.CreateObject("ADODB.Recordset") SQL = "select first_name||' '||last_name name from employee" rs.Open SQL, oConn If rs.EOF then %> <FONT face="Verdana" size="1"> <% Response.Write("No encontró registros ...") %> </FONT> <% Else Do Until rs.EOF %> <table border="0" width="100%"> <tr> <td width="100%"> <font face="Verdana" size="1"> <%=ucase(rs.Fields("name").Value)%> </font></td> </tr> </table> <% rs.movenext Loop rs.Close oConn.Close set rs = nothing set oConn = nothing End If %> |
| La zona horaria es GMT -6. Ahora son las 10:29. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.