Cómo exportar calendarios de Microsoft Outlook 2010 a formato CSV para importarlos desde cualquier otro sistema de calendario que lo soporte. En concreto realizamos la exportación de Outlook 2010 e importamos en Google Calendar. También realizamos el proceso inverso, exportar de Google Calendar a formato iCal e importarlo en Outlook 2010. Mostramos como crear varios calendarios (independientes) en ambas plataformas.
Mostrando entradas con la etiqueta exportar. Mostrar todas las entradas
Mostrando entradas con la etiqueta exportar. Mostrar todas las entradas
1/22/2013
Exportar DataGridView a fichero CSV C# C Sharp
Exportar DataGridView a fichero CSV C# C Sharp
* dlGuardar: componente de tipo SaveFileDialog.
* dbTabla: componente de tipo DataGridView con los datos a exportar a fichero.
Explicamos cómo exportar el
contenido de un DataGridView a un fichero de texto plano separado por
punto y coma, que se puede abrir con Office Excel, OpenOffice Calc o con
LibreOffice Calc, incluso con cualquier editor de texto plano (notepad,
vi, nano).
dlGuardar.Filter = "Fichero CSV (*.csv)|*.csv";
dlGuardar.FileName = "Datos_sqlite";
dlGuardar.Title = "Exportar a CSV";
if (dlGuardar.ShowDialog() == DialogResult.OK)
{
StringBuilder csvMemoria = new StringBuilder();
//para los títulos de las columnas, encabezado
for (int i = 0; i < dbTabla.Columns.Count; i++)
{
if (i == dbTabla.Columns.Count - 1)
{
csvMemoria.Append(String.Format("\"{0}\"",
dbTabla.Columns[i].HeaderText));
}
else
{
csvMemoria.Append(String.Format("\"{0}\";",
dbTabla.Columns[i].HeaderText));
}
}
csvMemoria.AppendLine();
for (int m = 0; m < dbTabla.Rows.Count; m++)
{
for (int n = 0; n < dbTabla.Columns.Count; n++)
{
//si es la última columna no poner el ;
if (n == dbTabla.Columns.Count - 1)
{
csvMemoria.Append(String.Format("\"{0}\"",
dbTabla.Rows[m].Cells[n].Value));
}
else
{
csvMemoria.Append(String.Format("\"{0}\";",
dbTabla.Rows[m].Cells[n].Value));
}
}
csvMemoria.AppendLine();
}
System.IO.StreamWriter sw =
new System.IO.StreamWriter(dlGuardar.FileName, false,
System.Text.Encoding.Default);
sw.Write(csvMemoria.ToString());
sw.Close();
}
Donde:* dlGuardar: componente de tipo SaveFileDialog.
* dbTabla: componente de tipo DataGridView con los datos a exportar a fichero.
12/05/2012
Exportar ListView a fichero CSV C# CSharp
Exportar ListView a fichero CSV C# Proyecto AjpdSoft
Explicamos cómo exportar el contenido de un ListView con varias columnas a un fichero de texto plano separado por punto y coma, que se puede abrir con Office Excel, OpenOffice Calc o con LibreOffice Calc, incluso con cualquier editor de texto plano (notepad, vi, nano).
dlGuardar.Filter = "Fichero CSV (*.csv)|*.csv";
dlGuardar.FileName = "Lista PDF Nóminas";
dlGuardar.Title = "Exportar a CSV";
if (dlGuardar.ShowDialog() == DialogResult.OK)
{
StringBuilder csvMemoria = new StringBuilder();
foreach (ColumnHeader columnasLista in lsPDF.Columns)
{
csvMemoria.Append(String.Format("\"{0}\";", columnasLista.Text));
}
csvMemoria.AppendLine();
foreach (ListViewItem elementosLista in lsPDF.Items)
{
foreach (ListViewItem.ListViewSubItem lvs in elementosLista.SubItems)
{
if (lvs.Text.Trim() == string.Empty)
csvMemoria.Append("\"\";");
else
csvMemoria.Append(String.Format("\"{0}\";", lvs.Text));
}
csvMemoria.AppendLine();
}
System.IO.StreamWriter sw =
new System.IO.StreamWriter(dlGuardar.FileName, false,
System.Text.Encoding.Default);
sw.Write(csvMemoria.ToString());
sw.Close();
Donde: - dlGuardar: será un componente no visual de tipo SaveFileDialog.
- lsPDF: ListView.
2/17/2012
Cómo exportar una máquina virtual de VMware Workstation 7 a VMware ESXi 5
Tutorial sobre cómo
exportar una máquina virtual de VMware Workstation 7 (instalado sobre
Microsoft Windows 7) a un servidor con VMware ESXi 5.
- Requisitos para importar máquina de VMware Workstation a VMware ESXi.
- Exportar máquina virtual de VMware Workstation a VMware ESXi.
- Artículos relacionados.
- Créditos.
Requisitos para exportar máquina de VMware Workstation a VMware ESXi
Los requisitos obvios para exportar una máquina virtual existente en VMware Workstation a un servidor con VMware ESXi son los siguientes:
- Disponer del equipo con un sistema operativo anfitrión (sea Windows ó Linux), con VMware Workstation instalado y la máquina virtual que queramos enviar a un ESXi. La máquina virtual debe estar detenida (apagada) no puede estar ni pausada ni iniciada.
- Por otro lado necesitaremos el servidor con VMware ESXi que será el destino donde se importe la máquina virtual procedente de VMware Workstation. En este servidor deberemos tener espacio suficiente para alojar la máquina virtual. En el siguiente artículo explicamos cómo instalar VMware ESXi y cómo administrarlo con VMware vSphere Client:
Exportar máquina virtual de VMware Workstation a VMware ESXi
Desde el equipo con VMware Workstation y la máquina
virtual que queramos exportar abriremos VMware Workstation,
comprobaremos que la máquina virtual que queremos exportar está detenida
(no puede estar ni pausada ni iniciada) y accederemos al menú "File" -
"Import or Export":
Se iniciará el asistente para convertir máquinas
virtuales (máquina físicas a virtuales, virtuales a virtuales, virtuales
en appliances a virtuales, etc.). Pulsaremos "Siguiente":
Pulsaremos "Siguiente" para iniciar el primer paso que será elegir el origen:
En el desplegable "Select the type of source you want
to use" seleccionaremos "Other" (A VMware Workstation virtual machine,
VMware Consolidated Backup (VCB), third-party virtual machine, or third
party disk image):
Pulsaremos en el botón "Browse" para seleccionar el fichero de la máquina virtual que importaremos en VMware ESXi:
Abriremos la carpeta donde se encuentren los ficheros
de la máquina virtual que queremos convertir de VMware Workstation a
VMware ESXi, seleccionaremos el fichero "vmx" que contiene la máquina
virtual:
Una vez seleccionada la máquina virtual de VMware Workstation pulsaremos "Siguiente":
Como hemos comentado al principio, si la máquina
virtual origen de VMware Workstation está iniciada o pausada, el
asistente mostrará el siguiente error indicando que la máquina origen
debe estar apagada:
Con el texto: Unable to convert a virtual machine while it is powered on or suspended. Shutdown and power off the virtual machine before converting it.
Seleccionaremos el disco o discos de la máquina
virtual origen que queramos convertir a VMware ESXi (podremos
redimensionarlos si así lo estimamos marcando "Select volumes and resize
to save or add space", si no marcaremos "Convert all disk and maintain
size"):
Pulsaremos "Siguiente" para iniciar el segundo paso
(elegir el destino de la conversión de la máquina virtual VMware
Workstation):
En el desplegable "Select the destination type"
elegiremos "VMware Infrastructure Virtual Machine" (The virtual machine
is stored in VMware VirtualCenter, or a VMware ESX Server):
Introduciremos la IP, el usuario y la contraseña (Server, User name, Password) del servidor destino con VMware ESXi:
Introduciremos un nombre para la nueva máquina virtual que se creará en VMware ESXi, por ejemplo "Linux Ubuntu 10 AjpdSoft":
Si tenemos varios host (servidores) ESXi podremos
elegir a continuación en qué servidor o pool de servidores se iniciará
esta máquina virtual (a qué servidor se le asignará). Puesto que tenemos
sólo uno lo seleccionaremos "localhost.localdomain" y pulsaremos
"Siguiente":
Seleccionaremos el datastore en el que se almacenarán
los ficheros de la nueva máquina virtual si tenemos varios, en nuestro
caso tenemos ólo uno "datastore1", lo seleccionaremos y pulsaremos
"Siguiente":
Seleccionaremos los adaptadores de red para la nueva máquina virtual:
Pulsaremos "Siguiente" pues en este paso nos indica
que podemos personalizar el sistema operativo huésped, que no será
necesario (identidad de la máquina virtual como hostname, configuración
de red y permitir también eliminar los posibles puntos de restauración
que pudiera tener):
Antes de iniciar el proceso final de conversión de
máquina virtual VMware Workstation a VMware ESXi el asistente nos
mostrará un resumen de las opciones elegidas. Si son correctas
pulsaermos en "Finalizar" para iniciar el proceso:
Se iniciará el proceso de creación de la máquina
virtual en el servidor VMware ESXi y el traspaso de la información de
VMware Workstation a ESXi:
Si accedemos a la administración del servidor VMware ESXi por ejemplo mediante VMware vSphere Client podremos ver la nueva máquina virtual creada:
El proceso puede tardar entre 5 y 50 minutos en
función del tamaño de la máquina virtual a convertir y de la velocidad
de la red y del servidor
Una vez finalizado el proceso ya tendremos disponible
la máquina virtual de VMware Workstation en el servidor VMware ESXi.
Podremos iniciciarla pulsando con el botón derecho del ratón sobre ella y
seleccionando "Power" - "Power On":
Si todo es correcto se iniciará la máquina virtual en
ESXi y ya dispondremos de un nuevo equipo virtual, en nuestro caso con
Linux Ubuntu:
Para consultar los ficheros de la nueva máquina
virtual convertida desde VMware Workstation a VMware ESXi en el servidor
ESX, seleccionaremos el servidor, en la pestaña "Summary" pulsaremos
con el botón derecho del ratón sobre el datastore usado y
seleccionaremos "Browse Datastore":
El asistente de conversión de Workstation a ESXi
habrá creado una carpeta con el nombre de la máquina virtual, dentro de
ella podremos ver los ficheros creados (.vmx, .vmdk, .nvram, .log,
.vmxf, .vmsd):
Artículos relacionados
- Instalar VMware ESXi 5 en VMware Workstation, instalar vSphere Client.
- Instalar GNU Linux Ubuntu 10.04 LTS (Lucid Lynx) Beta 1 virtualizado en VMware.
- Virtualización con VMware Server 2.0, acceso remoto a máquinas virtuales.
- Instalar GNU Linux Ubuntu 9.10 virtualizado con Sun VirtualBox 3.0.12.
- Añadir una nueva unidad de disco (disco duro) a GNU Linux Ubuntu Server.
- Artículos, trucos y manuales del Proyecto AjpdSoft sobre virtualización (VMware, VirtualBox).
- Cómo arrancar un equipo con un pendrive y GNU Linux Ubuntu 9.04 Live.
- Artículos del Proyecto AjpdSoft sobre el sistema operativo GNU Linux.
- AjpdSoft Enciclopedia - Definición URL.
- AjpdSoft Enciclopedia Mozilla Firefox.
- Virtualizar en GNU Linux, instalar VirtualBox en GNU Linux Ubuntu 10.10 64 bits.
- Instalar GNU Linux Ubuntu 9.10 virtualizado con Sun VirtualBox 3.0.12.
- Cómo instalar GNU Linux Debian 5.0.7 virtualizado en VMware Workstation.
- Virtualización con Sun xVM VirtualBox del sistema operativo OpenSolaris 11.
- Artículos, trucos, manuales sobre virtualización con VirtualBox.
- Cómo crear una imagen de un disco duro con Clonezilla de forma gratuita free.
- Cómo instalar GNU Linux Debian 5.0.7 virtualizado en VMware Workstation.
- Instalación de Microsoft Windows 7 Ultimate virtualizado en VMware Server 2.0.1.
- Artículos y manuales del Proyecto AjpdSoft sobre virtualización.
- Instalar Ubuntu 11.04 Natty Narwhal con el nuevo Unity sustituyendo a GNOME.
- Definición RAM.
- Definición CPU.
Créditos
1/09/2012
Cómo exportar archivo de parámetros de Oracle actual SPFILE
Cómo exportar archivo de parámetros de Oracle actual SPFILE
Explicamos cómo exportar el achivo de parámetros de Oracle SPFILE a un PFILE, explicamos la diferencia entre el PFILE y el SPFILE y cómo iniciar Oracle con un fichero PFILE.
Explicamos cómo exportar el achivo de parámetros de Oracle SPFILE a un PFILE, explicamos la diferencia entre el PFILE y el SPFILE y cómo iniciar Oracle con un fichero PFILE.
1/22/2011
Explicamos en este artículo cómo importar o convertir un fichero de texto plano separado por comas o punto y coma (con formato CSV) a una base de datos Microsoft Access, pasando previamente por Microsoft Excel.
- Ficheros CSV.
- Cómo importar un fichero csv de texto plano a Microsoft Excel xls ó xlsx.
- Importar fichero de Excel xls xlsx a Access mdb mdbx.
- Artículos relacionados.
- Créditos.
Ficheros CSV
Los ficheros CSV (Comma-Separated Values ó valores separados por coma) son un tipo de documento en formato abierto sencillo para representar datos en forma de tabla, en las que las columnas se separan por comas (o punto y coma en donde la coma es el separador decimal) y las filas por saltos de línea. Los campos que contengan una coma, un salto de línea o una comilla doble deben ser encerrados entre comillas dobles.
El formato CSV es muy sencillo y no indica un juego de caracteres concreto, ni cómo van situados los bytes, ni el formato para el salto de línea. Estos puntos deben indicarse muchas veces al abrir el fichero, por ejemplo, con una hoja de cálculo.
Por ejemplo:
"Proyecto AjpdSoft";"21/01/2011";"http://www.ajpdsoft.com";"14000";"Aplicaciones gratuitas, open source"
Cómo importar un fichero csv de texto plano a Microsoft Excel xls ó xlsx
Como ejemplo crearemos un fichero csv de texto plano en el sistema operativo Microsoft Windows 7 con el siguiente contenido:
"AJ Soluciones informáticas";"01/09/2010";"http://www.ajsolucionesinformaticas.com";"100";"Imágenes"
"Laboratorio AjpdSoft";"10/01/2011";"http://www.proyectoa.com";"10000";"Laboratorio de pruebas de AjpdSoft"
"Proyecto AjpdSoft";"21/01/2011";"http://www.ajpdsoft.com";"14000";"Aplicaciones gratuitas, open source"
"Laboratorio AjpdSoft";"10/01/2011";"http://www.proyectoa.com";"10000";"Laboratorio de pruebas de AjpdSoft"
"Proyecto AjpdSoft";"21/01/2011";"http://www.ajpdsoft.com";"14000";"Aplicaciones gratuitas, open source"
Para realizar la importación o conversión del fichero CSV abriremos Microsoft Excel, abriremos la ficha "Datos" y pulsaremos en "Obtener datos externos", seleccionaremos "Desde texto":
Seleccionaremos el fichero con formato CSV, en nuestro caso "Dominios AjpdSoft.csv" y pulsaremos "Importar":
Nos mostrará el asistente para importar texto, en primer lugar seleccionaremos los siguientes datos:
- Tipo de los datos originales: seleccionaremos el formato del tipo de archivo, o bien delimitado (por comas o punto y coma) o bien de ancho fijo (normalmente espacios o tabuladores). En nuestro caso seleccionaremos "Delimitados".
- En "Comenzar a importar en la fila" introduciremos "1" y en "Origen del archivo" seleccionaremos "Windows (ANSI)".
Pulsaremos "Siguiente" para continuar:
A continuación indicaremos el separador usado en nuestro fichero csv, en nuestro caso "Punto y coma". Los separadores permitidos:
- Tabulación.
- Punto y coma..
- Coma.
- Espacio.
- Otro carácter
A continuación el asistente nos pemitirá elegir el tipo de datos básico para cada columna. Por ejemplo, si pulsamos en la columna que incluye una fecha podremos indicar en "Formato de los datos en columnas" el tipo de datos "Fecha", con formato "DMA" (día, mes y año). Seleccionaremos el tipo de datos para cada columna y pulsaremos "Finalizar":
Introduciremos en qué fila y en qué columna queremos insertar los datos y pulsaremos "Aceptar":
Microsoft Excel nos mostrará los datos importados del fichero CSV
Pulsaremos en "Guardar" para guardar los datos CSV a formato Microsoft Excel (hoja de cálculo xls ó xlsx):
Importar fichero de Excel xls xlsx a Access mdb mdbx
A continuación vamos a convertir un fichero en formato Microsoft Excel (hoja de cálculo xls ó xlsx) a base de datos Microsoft Access. Realizaremos la importación de los datos de una hoja de un libro de Microsoft Excel a una tabla de una base de datos Microsoft Access, todo ello de forma automática usando el asistente de importación de Microsoft Access.
En primer lugar abriremos Microsoft Access, en nuestr ocaso la versión 2007, aunque para el resto de versiones el proceso es similar. Pulsaremos en "Nueva base de datos en blanco", introduciremos la ruta y el nombre de la carpeta donde se guardará el fichero Access accdb, en nuestro caso "Dominios AjpdSoft.accdb" y pulsaremos "Crear":
Desde la ficha "Datos externos", pulsaremos en "Excel" (Importar a una hoja de cálculo de Excel: importa o vincula datos de un archivo de Microsoft Office Excel):
Se iniciará el asistente para obtener datos externos de Microsoft Access, en "Nombre de archivo" pulsaremos en "Examinar" para seleccionar el archivo Microsoft Office Excel origen:
Seleccionaremos el fichero Microsoft Office Excel que contiene los datos CSV que importamos en este paso, en nuestro caso "Dominios.xlsx":
A continuación podremos elegir el tipo de importación a realizar, podremos seleccionar las siguientes positibilidades:
- Importar el origen de datos en una nueva tabla de la base de datos actual: si la tabla especificada no existe, Access la creará. Si la tabla especificada ya existe, Access puede sobreescribir el contenido con los datos importantes. Los cambios realizados en los datos de origen no se reflejarán en la base de datos.
- Anexar una copia de los registros a la tabla "nombre_tabla": si la tabla especificada ya existe, Access agregará los registros a la tabla. Si la tabla no existe, Access la creará. Los cambios realizados en los datos de origen no se reflejarán en la base de datos.
- Vincular al origen de datos creando una tabla vinculada: Access creará una tabla que mantendrá un vínculo a los datos de origen en Excel. Los cambios realizados en los datos de origen de Excel se reflejarán en la tabla vinculada. Sin embargo, los datos de origen no se pueden modificar en Access.
En nuestro caso, puesto que es una base de datos nueva y puesto que no queremos vincular el contenido sino importarlo y usar los datos en Access seleccionaremos "Importar el origen de datos en una nueva tabla de la base de datos actual":
Seleccionaremos la hoja del libro de Excel que contiene los datos a Importar, en nuestro caso "Dominios_AjpdSoft", marcando la opción "Mostrar hojas de trabajo". Pulsaremos "Siguiente" para continuar:
Marcaremos la opción "Primera fila contiene encabezados de columna" si en la hoja de Excel hemos añadido encabezados a las columnas, en caso contrario no la marcaremos y pulsaremos "Siguiente":
A continuación el asistente para importación de hojas de cálculo nos permitirar seleccionar el tipo de datos Access para cada columna (campo) de Excel. Por ejemplo, seleccionando la columna "nombre" podremos indicar los siguientes datos para el campo que se creará en la tabla de Access:
- Nombre de campo: nombre que se le dará al campo de la tabla de Access que se creará.
- Indexado: crear índice para este campo, las posibilidades:
- No: no se creará índice para este campo.
- Sí (Con duplicados): creará un índice para acelerar las búsquedas, pero se permitirán datos duplicados.
- Sí (Sin duplicados): creará un índice que, además, no permitirá datos duplicados en los registros.
- Tipo de dato: seleccionaremos el tipo de dato para el campo actual, las posibilidades: Texto, Sí/No, Byte, Entero, Entero largo, Moneda, Simple, Doble, Fecha/Hora, Memo, Hipervínculo.
- "No importar el campo (Saltar): si no queremos importar la columna seleccionada marcaremos este check.
Realizaremos el proceso de seleccionar el tipo de datos para todos los campos de la hoja de cálculo Excel. En el ejemplo, crearemos un índice sin duplicados para el campo "web":
A continuación podremos crear una clave principal (clave primaria o primary key) para la tabla que se importará. Es recomendable que todas las tablas tengan una clave primaria, en el ejemplo usaremos el campo "web" como clave primaria, por lo que seleccionaremos "Elegir la clave principal y seleccionaremos "web". Las posibles opciones son:
- Permitir a Access agregar la clave principal: el asistente de importación de hojas de cálculo creará un campo nuevo llamado "Id" con tipo de datos "Autonumérico" y lo establecerá como clave primaria (primary key).
- Elegir la clave principal: con esta opción podremos elegir de entre los campos que se importarán. Hay que tener en cuenta que la clave principal debe ser un campo que contenga valores y que estos sean siempre diferentes, pues no permitirá duplicados.
- Sin clave principal: no se creará clave principal para la tabla importada.
Por último, para que el proceso finalice y se inicie la importación, introduciremos el nombre de la tabla de Access que se creará con los datos importados de Excel y pulsaremos "Finalizar". Si queremos que se inicie el asistente para analizar la estructura de la tabla marcaremos la opción "Desearía que el asistente analizara la estructura de la tabla después de importar los datos":
El asistente para analizar la estructura permite crear tablas vinculadas a la principal a partir de campos con valores "repetidos". Por ejemplo, si tenemos un fichero Excel con esta estructura:
"Nombre cliente 1", "Importe 1", "Número factura 1"
"Nombre cliente 2", "Importe 2", "Número factura 2"
"Nombre cliente 3", "Importe 3", "Número factura 3"
"Nombre cliente 2", "Importe 4", "Número factura 4"
"Nombre cliente 3", "Importe 5", "Número factura 5"
El asistente para analizar la estructura de las tablas permitirá crear dos tablas, una de "facturas" y otra de "clientes" y vinculará ambas por una clave foránea. En nuestro ejemplo sólo queremos crear una tabla por lo que no usaremos el asistente para analizar la estructura de las tablas. Pulsaremos "No" en el mensaje:
Con el texto: "El asistente ahora está preparado para analizar los nuevos datos de la tabla. ¿Desea continuar?".
Por último, el asistente de Microsoft Office Access para obtener datos externos nos permitirá guardar los pasos de la importación para futuras importaciones. Para ello marcaremos el check "Guardar pasos de importación" y en "Guardar como" introduciremos un nombre descriptivo. Pulsaremos en "Guardar importación":
Tras la importación, desde Microsoft Office Access, podremos acceder a los datos importados, tanto al diseño de la tabla que el asistente habrá creado:
Como a la consulta y modificación de los datos importados desde Excel:
Si se produce algún error de importación, el asistente creará una tabla llamada "nombre_tabla_importacion$_ErroresDeImportación" con la estructura:
- Campo: nombre del campo en el que se ha producido el error.
- Error: descripción del motivo por el cual no se ha podido realizar la importación de los datos de este registro.
- Fila: número de fila en la que se produce el error.
Nota: hay que tener en cuenta que Microsoft Office Access permite realizar importaciones desde casi cualquier origen de datos, incluido, por supuesto, CSV, por lo que no sería necesario pasar de CSV a Excel y de Excel a Access, es posible pasar de CSV a Access directamente.
Artículos relacionados
- Exportar una tabla Microsoft Access a MySQL.
- Acceso a una base de datos Microsoft Access desde Microsoft Word.
- Cómo compilar un fichero Access (de MDB a MDE).
- Consultas e informes desde Microsoft Access a Excel.
- Artículos del Proyecto AjpdSoft sobre Microsoft Access.
- Cómo acceder a una BBDD MS Access con Delphi sin utilizar código fuente.
- Cómo exportar o migrar una base de datos MySQL a PostgreSQL de forma manual.
- Tipos de datos data types en el motor de base de datos PostgreSQL.
- Tipos de datos en MySQL Server.
- Acceso al motor de base de datos PostgreSQL desde Windows XP con ODBC.
- Instalar el motor de bases de datos PostgreSQL en GNU Linux Debian 5
- Instalar y realizar aplicación web con Oracle Application Express.
- Instalación y configuración de Windows XP Service Pack 3.
- Instalación de Microsoft Windows 7 Ultimate virtualizado en VMware Server 2.0.1.
- AjpdSoft Administración Bases de Datos (ejemplo de acceso con Delphi a Access mediante ODBC, Open Source).
- AjpdSoft Control aula libre acceso (ejemplo de acceso nativo con Delphi a Access, Open Source).
- AjpdSoft Inventario PCs (ejemplo de acceso nativo con Delphi a Access, Open Source).
- AjpdSoft Mostrar Clave Access 97.
- AjpdSoft Usuarios Conectados a MDB.
- Realizar aplicación en Delphi con tablas Paradox en Red.
- Cómo conectar Oracle Database con Access mediante Oracle Transparent Gateway.
- Foros del Proyecto AjpdSoft sobre Microsoft Access con trucos y dudas resueltas.
- Definición ODBC.
- Definición SQL.
Créditos
Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.11/14/2010
Explicamos cómo migrar un servidor de base de datos MySQL Server a un servidor de base de datos PostgreSQL. Explicamos cómo convertir manualmente un fichero de script SQL generado con mysqldump para ser ejecutado y exportado a PostgreSQL. Explicamos cómo hacer la copia de seguridad en MySQL y cómo importarla (tras su adaptación) a PostgreSQL. Mostramos una tabla de correspondencias entre tipos de datos MySQL y PostgreSQL.
- ¿Por qué migrar de MySQL Server a PostgreSQL? MySQL vs PostgreSQL.
- Consejos iniciales antes de la migración de MySQL a PostgreSQL.
- Copia de seguridad de MySQL Server lógica (a fichero SQL).
- Copia de seguridad física de MySQL (ficheros de la BD).
- Realizar pruebas de las aplicaciones de nuestra empresa en la nueva BD PostgreSQL.
- Copia de seguridad física de MySQL (ficheros de la BD).
- Elección del sistema operativo para el servidor de PostgreSQL.
- Cambiar tipos de datos no coincidentes entre MySQL y PostgreSQL.
- Campos autoincremento de MySQL, simular el auto_increment de MySQL en PostgreSQL con secuencias.
- Restricciones de clave (llave única), diferencias entre MySQL y PostgreSQL.
- Tipo de motor de base de datos InnoDB y MyISAM.
- El sistema operativo de los servidores de MySQL y de PostgreSQL.
- Probar y adaptar en caso necesario las aplicaciones que accederán a PostgreSQL.
- Importación del fichero SQL en PostgreSQL resultante de la exportación de MySQL y la adaptación.
- Anexo.
- Artículos relacionados.
- Créditos.
¿Por qué migrar de MySQL Server a PostgreSQL? MySQL vs PostgreSQL
Existen multitud de motivos para cambiar nuestro motor de base de datos de MySQL Server a PostgreSQL. A continuación expondremos algunos de ellos. Aunque hay que hacerlo con precaución y conocimiento de causa, pues es un paso importante y delicado.
No existe un motor de base de datos mejor que otro, existe nuestro entorno y el motor de base de datos que mejor se adapte a él, según nuestras exigencias. Por lo que la decisión de migrar de un motor de base de datos a otro es muy personal.
PostgreSQL es un motor de base de datos mucho más robusto que MySQL, posee una estructura al estilo de Oracle y es Open Source y gratuita, con licencia GPL. En cambio MySQL tiene un sistema de licenciamiento dual, posee una parte privada y otra GPL. Si bien MySQL es un proyecto Open Source, desde su adquisición por parte de Oracle se ha parado bastante. Casi no salen nuevas versiones ni mejoras.
Algunas de las ventajas (pros) de PostgreSQL:
- Ejecución eficaz tanto de SQL estático (por ejemplo, PHP) como de SQL parametrizado (por ejemplo, de Java).
- Optimizador avanzado basado en costo, con opciones de planes de ejecución y recopilación de estadísticas para personalización.
- Indexación parcial, funcional, de múltiples índices combinados, con cuatro tipos de índice diferentes.
- Sistema de compresión de datos TOAST (The Oversized-Attribute Storage Technique).
- Gran escalabilidad al ampliar el número de procesadores o la memoria RAM.
- Soporta rollback, subconsultas, transacciones y control de integridad referencial.
- Soporta triggers y procedimientos almacenados.
- Soporta tipos de datos para sistemas SIG ó GIS (Sistema de Información Geográfica).
- Tiene licencia BSD, mucho más permisiva que la GPL.
- El desarrollo de PostgreSQL no está controlado por una empresa, sino que es dirigido por una comunidad de desarrolladores que trabajan de forma desinteresada, altruista, libre y/o apoyados por organizaciones comerciales. Es un proyecto en contínua actualización, lanzando nuevas versiones con muchas mejoras cada cierto tiempo.
- Posee casi todas las características de otros motores de base de datos comerciales como Oracle, Microsoft SQL Server, Informix.
- Utiliza control de concurrencia multi-versión.
- Totalmente conforme a ACID (Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad) en sus transacciones.
Algunos inconvenientes (contras) de PostgreSQL:
- Consume bastantes recursos en el equipo donde se instala.
- Es más lento en consultas SELECT que MySQL, aunque no en todos los casos y configuraciones.
Para el caso de MySQL, exponemos algunas de sus ventajas (pros):
- En determinadas configuraciones con el motor MyISAM puede ser muy rápido, sobre todo en consultas SELECT.
- Soporta múltiples motores de almacenamiento: MyISAM, Merge, InnoDB, BDB, Memory/heap, MySQL Cluster, Federated, Archive, CSV, Blackhole y Example en 5.x, permitiendo al usuario escoger la que sea más adecuada para cada tabla de la base de datos, dependiendo del uso que se le vaya a dar.
- Agrupación de transacciones, reuniendo múltiples transacciones de varias conexiones para incrementar el número de transacciones por segundo.
- MySQL Embedded Database.
- Suele consumir pocos recursos del equipo donde se instala, en función de la configuración elegida.
- Existen multitud de aplicaciones para la administración de MySQL.
Algunos inconvenientes (contras) de MySQL:
- Ante todo la adquisición de MySQL por parte de Oracle no deja claro su futuro. No queda claro si se seguirá el desarrollo de MySQL con nuevas versiones con mejores y más características.
- Facilidad de uso y configuración: MySQL es bastante más sencilla de administrar y configurar que PostgreSQL.
- Hasta la versión 6 que sigue en estado alpha no soporta integridad referencial.
- De momento no implementa una buena escalabilidad por lo que no es aconsejable para grandes bases de datos.
En resumen, cada motor de base de datos será interesante para cada situación. La elección del motor de base de datos a usar es muy personal y dependerá de las necesidades y uso que se le vaya a dar. Por ejemplo, para una empresa que quiera montar un servidor web con un sitio web dinámico que sea muy rápido y requiera de pocas modificaciones e inserciones se recomienda MySQL con el motor MyISAM. En cambio, para empresas que requieran de un robusto motor de base de datos con muchas modificaciones e inserciones concurrentes será conveniente usar PostgreSQL.
Así pues no nos podemos decantar por un motor u otro, pues sería un error, cada motor tiene sus ventajas y sus inconvenientes.
Consejos iniciales antes de la migración de MySQL a PostgreSQL
Por supuesto, no en todos los entornos es recomendable cambiar o migrar de MySQL a PostgreSQL. Por ejemplo, en casos de servidores web con Apache, MySQL y PHP, no siempre es recomendable pasar de MySQL a PostgreSQL. MySQL puede ser más rápido en determinados entornos que PostgreSQL. Sobre todo cuando no hay muchas inserciones (INSERT) o modificaciones (UPDATE), cuando hay muchas consultas. En este caso, usando MyISAM de MySQL pueden obtenerse mejores resultados que con PostgreSQL.
Y repetimos, no es conveniente migrar por migrar de un motor de base de datos a otro, conviene estudiar bien las características de cada uno y analizar las que mejor se adapten a nuestro entorno. Hay que tener en cuenta que el uso que se le da a cada base de datos en cada organización o empresa es muy personal. Por ejemplo, una empresa dedicada a la contabilidad y facturación no tendrá los mismos requisitos que una empresa dedicada a servicios web.
Por ello, antes de lanzarse a realizar un cambio de estas dimensiones, es fundamental analizar y realizar las pruebas pertinentes de rendimiento, productividad y disponibilidad en entornos de virtualización. Así garantizaremos que el cambio será exitoso, de lo contrario podremos tener "sorpresas" desagradables.
Copia de seguridad de MySQL Server lógica (a fichero SQL)
Por supuesto y como siempre hemos de realizar copia de seguridad de los datos de MySQL. Vamos a explicar cómo hacer una copia lógica (exportación de los datos a fichero SQL). Esta copia será la usada para la migración o importación a PostgreSQL, usaremos el fichero generado aquí y lo adaptaremos para poder ser ejecutado en PostgreSQL.
Para realizar una copia de seguridad lógica podremos usar cualquier aplicación del mercado o alguna gratuita. Por ejemplo, podremos usar AjpdSoft Copia Seguridad MySQL, como indicamos en el siguiente artículo:
En realidad, la aplicación anterior usa el comando mysqldump de MySQL.
También podremos usar MySQL Administrator, herramienta gratuita disponible en la web de MySQL. Una vez abierta y conectados a la base de datos MySQL, pulsaremos (a la izquierda) en "Backup", pulsaremos en "New Project" y seleccionaremos en "Schemata" el esquema del que haremos copia de seguridad, pasándolo a la derecha con el botón ">". En "Project Name" introduciremos el nombre del proyecto de copia de seguridad, por ejemplo "Copia_ajpdsoft". Si queremos guardar el proyecto pulsaremos "Save Project", si queremos ver más opciones pulsaremos "Advanced Options" y si queremos programarlo para que se ejecute de forma periódica pulsaremos en "Schedule". En nuestro caso lo ejecutaremos directamente pulsando en "Execute Backup Now" pues queremos migrar el sistema MySQL a PosgreSQL y no queremos volver a hacer copia de seguridad:
Por supuesto, en el caso de hacer copia de seguridad para una migración a otro entorno, como es este caso, debemos asegurarnos de que ningún equipo cliente esté accediendo a la base de datos MySQL mientras hacemos la copia de seguridad. Pues si algún cliente accede y hace modificaciones no quedarán guardadas en el fichero de copia de seguridad y no serán migradas a PostgreSQL. Por lo que debemos asegurarnos de que la copia de seguridad para la migración definitiva se hace sin ningún usuario conectado.
Copia de seguridad física de MySQL (ficheros de la BD)
Es conveniente realizar también una copia de los ficheros físicos que conforman la base de datos MySQL. Si vamos a eliminar el servidor con MySQL para cambiarlo por uno con PostgreSQL es muy recomendable hacer copia también de los ficheros físicos de la base de datos, además de la copia lógica. La ubicación de estos ficheros puede consultarse en el fichero my.ini de configuración de MySQL, en el parámetro datadir.
Para hacer la copia de seguridad física de MySQL detendremos el servicio previamente:
Una vez detenido haremos un "copiar pegar", copiaremos los ficheros en un medio no volátil (CD, DVD, unidad de cinta, etc.) y lo guardaremos en lugar seguro. No es conveniente eliminar esta copia de seguridad, pues si se complica el proceso de migración a PostgreSQL siempre podremos volver a MySQL.
Realizar pruebas de las aplicaciones de nuestra empresa en la nueva BD PostgreSQL
Bien usando virtualización o mediante cualquier otro método, es muy recomendable montar un servidor PostgreSQL (en Windows o en Linux) y probar las aplicaciones de nuestra empresa que lo vayan a usar. Incluso aunque los desarrolladores nos aseguren que las aplicaciones son compatibles con PosgreSQL, antes de realizar el cambio de MySQL a PostgreSQL es conveniente testearlas en entornos de prueba (virtualizados o no).
Lo más sencillo y menos costoso es instalar algún software de virtualización como VMware, como indicamos aquí:
Una vez preparada la máquina virtual (con el sistema operativo elegido), instalaremos PostgreSQL, como indicamos aquí:
Para Windows:
Para Linux:
Cuando ya tengamos el entorno de pruebas deberemos cambiar las conexiones de nuestras aplicaciones (por el método indicado por los desarrolladores) para que "apunten" al servidor de PostgreSQL de prueba. Verificaremos que todo funciona correctamente.
Elección del sistema operativo para el servidor de PostgreSQL
Es muy importante tener claro el sistema operativo donde se instalará el motor de base de datos PostgreSQL y que convertiremos en servidor de PostgreSQL. No haremos una comparativa entre GNU Linux y Microsoft Windows para PostgreSQL en este manual porque no es el objetivo. Pero sí queremos dejar claro que es recomendable que hagáis las pruebas de rendimiento, estabilidad y disponibilidad o bien con máquinas virtuales o bien en entornos de prueba real. Tanto si se elige Microsoft Windows como si se elige GNU Linux lo importante es que previamente se hayan barajado los pros y los contras para la organización.
Para el caso de la elección del sistema operativo ocurre lo mismo que para el caso de la elección del motor de base de datos ¿Microsoft Windows vs GNU Linux? ¿MySQL vs PostgreSQL? en todos los casos existen ventajas e inconvenientes. Es cuestión de elegir el sistema operativo que mejor se adapte a las necesidades de la empresa.
Cambiar tipos de datos no coincidentes entre MySQL y PostgreSQL
Deberemos reemplazar los tipos de datos de MySQL no coincidentes con los de PostgreSQL por su correspondiente. Por ejemplo, el tipo de datos "int(10)" de MySQL es equivalente al tipo de datos "integer" de PostgreSQL.
Tipos de datos MySQL y PostgreSQL
En el siguiente artículo se pueden consultar los tipos de datos de MySQL:
En este otro artículo se pueden consultar los tipos de datos de PostgreSQL:
Siguiendo estos manuales, reemplazaremos en el fichero SQL resultante de la exportación de los datos y tablas de MySQL los tipos de datos de MySQL con sus correspondientes PostgreSQL.
Tabla de correspondencias entre algunos tipos de datos de MySQL y PostgreSQL
Indicamos algunos tipos de datos MySQL y su correspondiente PostgreSQL:
| MySQL | PostgreSQL |
| INT(10) | INTEGER |
| TINYINT | SMALLINT |
| MEDIUMINT | INTEGER |
| BIGINT UNSIGNED | NUMERIC(20) |
| DOUBLE | DOUBLE PRECISION |
| FLOAT | REAL |
| TINYTEXT | TEXT |
| MEDIUMTEXT | TEXT |
| LONGTEXT | TEXT |
| BINARY(n) | BYTEA |
| VARBINARY(n) | BYTEA |
| TINYBLOB | BYTEA |
| BLOB | BYTEA |
| MEDIUMBLOB | BYTEA |
| LONGBLOB | BYTEA |
| DATETIME | TIMESTAMP |
| AUTO_INCREMENT | SERIAL (o usar secuencias para generar el autoincremento) |
Campos autoincremento de MySQL, simular el auto_increment de MySQL en PostgreSQL con secuencias
En MySQL el "tipo de datos" autoincremento al uso no existe, MySQL permite generar autoincrementos añadiendo la cláusula "AUTO_INCREMENT" en la creación de una tabla, por ejemplo:
CREATE TABLE bdajpdsoft.departamento ( codigo integer NOT NULL AUTO_INCREMENT, nombre varchar(150) NOT NULL, codigoubicacion integer )
En el caso de PostgreSQL, sí que incorpora un tipo de dato llamado "serial" que es autoincremental. Con lo cual, en nuestro fichero SQL exportado de MySQL, deberemos reemplazar las líneas:
nombre_campo integer AUTO_INCREMENT
Por:
nombre_campo serial
En realidad, al indicar el tipo de datos "serial", será el propio PostgreSQL el que cree una secuencia y la asigne al campo. Por ello PostgreSQL también permite simular los autoincrementos a partir de secuencias (al igual que Oracle). Si queremos usar secuencias en vez del tipo de datos "serial" (que al final será lo mismo), para cada auntoincremento (auto_increment) que tengamos en el SQL de MySQL tendremos que crear una secuencia y luego, en el SQL de creación de la tabla, en el campo que es autoincremento habrá que añadir: DEFAULT NEXTVAL('nombre_esquema.nombre_secuencia).
Será algo así, si tenemos este SQL de creación de una tabla en MySQL:
CREATE TABLE bdajpdsoft.departamento ( codigo integer NOT NULL AUTO_INCREMENT, nombre varchar(150) NOT NULL, codigoubicacion integer )
La consulta quedará dividida en dos para el caso de PostgreSQL:
1. Crear la secuencia para el autoincremento del campo "codigo" con:
CREATE SEQUENCE departamento_codigo
INCREMENT BY 1
MINVALUE 1
START 1;
2. Crear la tabla y en el campo "codigo" usar la secuencia anterior con:
CREATE TABLE bdajpdsoft.departamento ( codigo integer NOT NULL DEFAULT NEXTVAL(bdajpdsoft.departamento_codigo), nombre varchar(100) NOT NULL, PRIMARY KEY (codigo) );
Donde: "bdajpdsoft" será el nombre del esquema que usemos en PostgreSQL y "departamento" será el nombre de la tabla.
Restricciones de clave (llave única), diferencias entre MySQL y PostgreSQL
Para el caso de la declaración de las restricciones de claves (claves únicas y claves primarias), MySQL, al exportar con mysqldump, quedarán así:
CREATE TABLE bdincidencias.categoria (
codigo integer NOT NULL,
nombre_campo_unico varchar(75) NOT NULL,
fechaalta datetime,
PRIMARY KEY (codigo),
UNIQUE KEY nombre_clave_unica (nombre) );
Para el caso de PostgreSQL, la clave primaria (PRIMARY KEY) se declarará igual que para MySQL, y para las claves únicas, se declararán así:
CREATE TABLE bdincidencias.categoria (
codigo integer NOT NULL,
nombre_campo_unico varchar(75) NOT NULL,
fechaalta datetime,
PRIMARY KEY (codigo),
UNIQUE (nombre_campo_unico) );
Otra forma de definirlas en PostgreSQL, fuera de la consulta SQL de creación, es:
1. Para la clave primaria:
ALTER TABLE ONLY nombre_tabla
ADD CONSTRAINT nombre_clave PRIMARY KEY (nombre_campo);
2. Para las claves únicas:
ALTER TABLE ONLY nombre_esquema.nombre_tabla
ADD CONSTRAINT nombre_clave UNIQUE (nombre_campo);
Tipo de motor de base de datos InnoDB y MyISAM
MySQL admite varios engines (InnoDB, MyISAM, CSV, Archive, Memory, Blackhole, etc.), dependiendo del que hayamos elegido para cada tabla, en el SQL resultante de la exportación con mysqldump, mostrará algo así en cada tabla:
ENGINE=InnoDB
ó
ENGINE=MyISAM
PostgreSQL no admite tipos de engine, por lo que deberemos eliminar estas declaraciones del fichero SQL resultante de la exportación de los datos de MySQL con mysqldump.
El sistema operativo de los servidores de MySQL y de PostgreSQL
En principio, el sistema operativo en el que estén ubicados los servidores de MySQL (origen de la migración) y de PosgreSQL (destino de la migración) es indiferente para el proceso de migración.
Lógicamente si utilizamos GNU Linux, Mac OS X ó Windows, los comandos, aplicaciones y ubicaciones de archivos variarán. Pero el procedimiento de exportación de MySQL a fichero SQL y de modificación (adaptación) del fichero SQL e importación a PostgreSQL será similiar en cualquiera de los sistemas operativos.
En el siguiente artículo explicamos cómo instalar y administrar PostgreSQL en Windows 7:
En este otro artículo instalamos PostgreSQL en Linux:
Probar y adaptar en caso necesario las aplicaciones que accederán a PostgreSQL
Una vez realizada la migración de MySQL a PostgreSQL deberemos asegurarnos de que las aplicaciones de nuestra empresa de facturación, contabilidad, recursos humanos, etc. que guardaban los datos en MySQL funcionan correctamente en PostgreSQL. Para ello deberemos saber el tipo de conexión que usan (ODBC, nativa, etc.) para adaptarla al nuevo motor de base de datos PostgreSQL.
Además, habrá que asegurarse de que las aplicaciones no usen funciones específicas de MySQL como por ejemplo DESCRIBRE table, SHOW DATABASES, SHOW TABLES, etc. que no existen en PostgreSQL. De ser así habrá que adaptarlas a PostgreSQL, contactando con los desarrolladores de las aplicaciones para que realicen las modificaciones pertinentes.
También habrá que tener en cuenta y verificar si las aplicaciones de nuestra empresa que usaban MySQL utilizan funciones de SQL propias de MySQL (cadena de texto, fecha y hora, etc.), que también habrá que adaptar a PostgreSQL.
Importación del fichero SQL en PostgreSQL resultante de la exportación de MySQL y la adaptación
Una vez que hayamos adaptado el fichero SQL resultante de la exportación de MySQL para que pueda ser ejecutado correctamente en PostgreSQL, como hemos indicando en pasos anteriores, lo revisaremos y lo importaremos a PostgreSQL, a continuación explicamos cómo realizar esta importación.
1. En primer lugar crearemos la conexión al servidor, la base de datos y el esquema como indicamos aquí:
2. En el caso de PostgreSQL en GNU Linux abriremos una ventana de terminal, iniciaremos sesión con el usuario postgres, para ello ejecutaremos el comando GNU Linux:
su postgres
Introduciremos la contraseña del usuario postgres (contraseña que configuramos en la instalación de PostgreSQL)
Para realizar la importación definitiva de MySQL a PostgreSQL, ejecutaremos el siguiente comando indicando el archivo de script sql:
psql -U postgres -f /home/ajpdsoft/copia_mysql.sql
Por supuesto, una vez ejecutado el comando para la importación deberemos revisar que los datos se han importado correctamente.
Anexo
Ejemplo de script de SQL generado con PostgreSQL Dump
-- -- PostgreSQL database dump -- -- Started on 2010-11-08 21:49:17 CET SET statement_timeout = 0; SET client_encoding = 'UTF8'; SET standard_conforming_strings = off; SET check_function_bodies = false; SET client_min_messages = warning; SET escape_string_warning = off; -- -- TOC entry 1789 (class 1262 OID 16384) -- Name: bdajpdsoft; Type: DATABASE; Schema: -; Owner: postgres -- CREATE DATABASE bdajpdsoft WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'es_ES.utf8' LC_CTYPE = 'es_ES.utf8'; ALTER DATABASE bdajpdsoft OWNER TO postgres; \connect bdajpdsoft SET statement_timeout = 0; SET client_encoding = 'UTF8'; SET standard_conforming_strings = off; SET check_function_bodies = false; SET client_min_messages = warning; SET escape_string_warning = off; -- -- TOC entry 6 (class 2615 OID 16385) -- Name: esajpdsoft; Type: SCHEMA; Schema: -; Owner: postgres -- CREATE SCHEMA esajpdsoft; ALTER SCHEMA esajpdsoft OWNER TO postgres; SET search_path = esajpdsoft, pg_catalog; SET default_tablespace = ''; SET default_with_oids = false; -- -- TOC entry 1497 (class 1259 OID 16388) -- Dependencies: 6 -- Name: factura; Type: TABLE; Schema: esajpdsoft; Owner: postgres; Tablespace: -- CREATE TABLE factura ( codigo integer NOT NULL, fecha date, importe money, codigocliente integer, numero character varying(20) NOT NULL, num_fac integer ); ALTER TABLE esajpdsoft.factura OWNER TO postgres; -- -- TOC entry 1496 (class 1259 OID 16386) -- Dependencies: 1497 6 -- Name: factura_codigo_seq; Type: SEQUENCE; Schema: esajpdsoft; Owner: postgres -- CREATE SEQUENCE factura_codigo_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE esajpdsoft.factura_codigo_seq OWNER TO postgres; -- -- TOC entry 1792 (class 0 OID 0) -- Dependencies: 1496 -- Name: factura_codigo_seq; Type: SEQUENCE OWNED BY; Schema: esajpdsoft; Owner: postgres -- ALTER SEQUENCE factura_codigo_seq OWNED BY factura.codigo; -- -- TOC entry 1793 (class 0 OID 0) -- Dependencies: 1496 -- Name: factura_codigo_seq; Type: SEQUENCE SET; Schema: esajpdsoft; Owner: postgres -- SELECT pg_catalog.setval('factura_codigo_seq', 4, true); -- -- TOC entry 1498 (class 1259 OID 16396) -- Dependencies: 6 -- Name: nota; Type: TABLE; Schema: esajpdsoft; Owner: postgres; Tablespace: -- CREATE TABLE nota ( codigo integer NOT NULL, nota text ); ALTER TABLE esajpdsoft.nota OWNER TO postgres; -- -- TOC entry 1499 (class 1259 OID 16399) -- Dependencies: 1498 6 -- Name: nota_codigo_seq; Type: SEQUENCE; Schema: esajpdsoft; Owner: postgres -- CREATE SEQUENCE nota_codigo_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE esajpdsoft.nota_codigo_seq OWNER TO postgres; -- -- TOC entry 1794 (class 0 OID 0) -- Dependencies: 1499 -- Name: nota_codigo_seq; Type: SEQUENCE OWNED BY; Schema: esajpdsoft; Owner: postgres -- ALTER SEQUENCE nota_codigo_seq OWNED BY nota.codigo; -- -- TOC entry 1795 (class 0 OID 0) -- Dependencies: 1499 -- Name: nota_codigo_seq; Type: SEQUENCE SET; Schema: esajpdsoft; Owner: postgres -- SELECT pg_catalog.setval('nota_codigo_seq', 1, true); -- -- TOC entry 1777 (class 2604 OID 16391) -- Dependencies: 1496 1497 1497 -- Name: codigo; Type: DEFAULT; Schema: esajpdsoft; Owner: postgres -- ALTER TABLE factura ALTER COLUMN codigo SET DEFAULT nextval('factura_codigo_seq'::regclass); -- -- TOC entry 1778 (class 2604 OID 16401) -- Dependencies: 1499 1498 -- Name: codigo; Type: DEFAULT; Schema: esajpdsoft; Owner: postgres -- ALTER TABLE nota ALTER COLUMN codigo SET DEFAULT nextval('nota_codigo_seq'::regclass); -- -- TOC entry 1785 (class 0 OID 16388) -- Dependencies: 1497 -- Data for Name: factura; Type: TABLE DATA; Schema: esajpdsoft; Owner: postgres -- COPY factura (codigo, fecha, importe, codigocliente, numero, num_fac) FROM stdin; 3 2010-01-01 €120,00 1 0001/2010 \N 4 2010-11-08 €154.525,00 2 0002/2010 \N \. -- -- TOC entry 1786 (class 0 OID 16396) -- Dependencies: 1498 -- Data for Name: nota; Type: TABLE DATA; Schema: esajpdsoft; Owner: postgres -- COPY nota (codigo, nota) FROM stdin; 1 Prueba de tipo de datos Text para importación \. -- -- TOC entry 1780 (class 2606 OID 16395) -- Dependencies: 1497 1497 -- Name: factura_numero_key; Type: CONSTRAINT; Schema: esajpdsoft; Owner: postgres; Tablespace: -- ALTER TABLE ONLY factura ADD CONSTRAINT factura_numero_key UNIQUE (numero); -- -- TOC entry 1782 (class 2606 OID 16393) -- Dependencies: 1497 1497 -- Name: factura_pkey; Type: CONSTRAINT; Schema: esajpdsoft; Owner: postgres; Tablespace: -- ALTER TABLE ONLY factura ADD CONSTRAINT factura_pkey PRIMARY KEY (codigo); -- -- TOC entry 1784 (class 2606 OID 16409) -- Dependencies: 1498 1498 -- Name: nota_pkey; Type: CONSTRAINT; Schema: esajpdsoft; Owner: postgres; Tablespace: -- ALTER TABLE ONLY nota ADD CONSTRAINT nota_pkey PRIMARY KEY (codigo); -- -- TOC entry 1791 (class 0 OID 0) -- Dependencies: 3 -- Name: public; Type: ACL; Schema: -; Owner: postgres -- REVOKE ALL ON SCHEMA public FROM PUBLIC; REVOKE ALL ON SCHEMA public FROM postgres; GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO PUBLIC; -- Completed on 2010-11-08 21:49:17 CET -- -- PostgreSQL database dump complete --
Ejemplo de script de SQL generado con MySQL Dump
-- MySQL Administrator dump 1.4 -- -- ------------------------------------------------------ -- Server version 5.1.42-community /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; -- -- Create schema gestionagricola -- CREATE DATABASE IF NOT EXISTS gestionagricola; USE gestionagricola; -- -- Definition of table `caja` -- DROP TABLE IF EXISTS `caja`; CREATE TABLE `caja` ( `codigo` int(10) unsigned NOT NULL AUTO_INCREMENT, `fecha` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `importe` float NOT NULL DEFAULT '0', `saldo` float NOT NULL DEFAULT '0', `concepto` varchar(200) NOT NULL DEFAULT '', `codusuarioa` int(10) unsigned DEFAULT NULL, `codusuariom` int(10) unsigned DEFAULT NULL, `fechaa` datetime DEFAULT NULL, `fecham` datetime DEFAULT NULL, `codigotecnico` int(10) unsigned DEFAULT NULL, `tipo` varchar(10) DEFAULT NULL, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `caja` -- /*!40000 ALTER TABLE `caja` DISABLE KEYS */; /*!40000 ALTER TABLE `caja` ENABLE KEYS */; -- -- Definition of table `chequepagare` -- DROP TABLE IF EXISTS `chequepagare`; CREATE TABLE `chequepagare` ( `codigo` int(10) unsigned NOT NULL AUTO_INCREMENT, `fechavencimiento` datetime DEFAULT NULL, `codigotercero` int(10) unsigned NOT NULL DEFAULT '0', `importe` float DEFAULT NULL, `banco` varchar(100) DEFAULT NULL, `tipo` varchar(10) NOT NULL DEFAULT '', `iban` varchar(30) DEFAULT NULL, `ccc` varchar(20) DEFAULT NULL, `serie` char(2) DEFAULT NULL, `numero` varchar(15) DEFAULT NULL, `numero2` varchar(15) DEFAULT NULL, `fechaalta` datetime DEFAULT NULL, `observacion` varchar(255) DEFAULT NULL, `codusuarioa` int(10) unsigned DEFAULT NULL, `codusuariom` int(10) unsigned DEFAULT NULL, `fechaa` datetime DEFAULT NULL, `fecham` datetime DEFAULT NULL, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `chequepagare` -- /*!40000 ALTER TABLE `chequepagare` DISABLE KEYS */; /*!40000 ALTER TABLE `chequepagare` ENABLE KEYS */; -- -- Definition of table `cita` -- DROP TABLE IF EXISTS `cita`; CREATE TABLE `cita` ( `codigo` int(10) unsigned NOT NULL AUTO_INCREMENT, `asunto` varchar(150) NOT NULL DEFAULT '', `ubicacion` varchar(150) DEFAULT NULL, `comienzo` datetime DEFAULT NULL, `fin` datetime DEFAULT NULL, `descripcion` text, `codigocategoria` int(10) unsigned DEFAULT NULL, `codusuarioa` int(10) unsigned DEFAULT NULL, `codusuariom` int(10) unsigned DEFAULT NULL, `fechaa` datetime DEFAULT NULL, `fecham` datetime DEFAULT NULL, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `cita` -- /*!40000 ALTER TABLE `cita` DISABLE KEYS */; /*!40000 ALTER TABLE `cita` ENABLE KEYS */; -- -- Definition of table `cobro` -- DROP TABLE IF EXISTS `cobro`; CREATE TABLE `cobro` ( `codigo` int(10) unsigned NOT NULL AUTO_INCREMENT, `fecha` datetime DEFAULT NULL, `importe` float DEFAULT NULL, `codigocliente` int(10) unsigned DEFAULT NULL, `descripcion` varchar(255) DEFAULT NULL, `codusuarioa` int(10) unsigned DEFAULT NULL, `codusuariom` int(10) unsigned DEFAULT NULL, `fechaa` datetime DEFAULT NULL, `fecham` datetime DEFAULT NULL, `fichero` longblob, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `cobro` -- /*!40000 ALTER TABLE `cobro` DISABLE KEYS */; /*!40000 ALTER TABLE `cobro` ENABLE KEYS */; -- -- Definition of table `contacto` -- DROP TABLE IF EXISTS `contacto`; CREATE TABLE `contacto` ( `codigo` int(10) unsigned NOT NULL AUTO_INCREMENT, `nombre` varchar(100) NOT NULL DEFAULT '', `telefonoparticular1` varchar(20) DEFAULT NULL, `telefonoparticular2` varchar(20) DEFAULT NULL, `telefonoparticular3` varchar(20) DEFAULT NULL, `telefonoparticular4` varchar(20) DEFAULT NULL, `movilempresa1` varchar(20) DEFAULT NULL, `movilempresa2` varchar(20) DEFAULT NULL, `movilempresa3` varchar(20) DEFAULT NULL, `movilempresa4` varchar(20) DEFAULT NULL, `emailparticular1` varchar(150) DEFAULT NULL, `emailempresa1` varchar(150) DEFAULT NULL, `emailparticular2` varchar(150) DEFAULT NULL, `emailparticular3` varchar(150) DEFAULT NULL, `emailparticular4` varchar(150) DEFAULT NULL, `direccionparticular` varchar(250) DEFAULT NULL, `direccionempresa` varchar(250) DEFAULT NULL, `horariotrabajo` varchar(150) DEFAULT NULL, `empresa` varchar(100) DEFAULT NULL, `webparticular` varchar(250) DEFAULT NULL, `webempresa` varchar(250) DEFAULT NULL, `observacion` varchar(255) DEFAULT NULL, `fechaalta` datetime DEFAULT NULL, `ubicacion` varchar(40) DEFAULT NULL, `extension1` varchar(20) DEFAULT NULL, `extension2` varchar(20) DEFAULT NULL, `telefonoempresa1` varchar(20) DEFAULT NULL, `telefonoempresa2` varchar(20) DEFAULT NULL, `telefonoempresa3` varchar(20) DEFAULT NULL, `telefonoempresa4` varchar(20) DEFAULT NULL, `movilparticular1` varchar(20) DEFAULT NULL, `movilparticular2` varchar(20) DEFAULT NULL, `movilparticular3` varchar(20) DEFAULT NULL, `movilparticular4` varchar(20) DEFAULT NULL, `fax1` varchar(20) DEFAULT NULL, `fax2` varchar(20) DEFAULT NULL, `emailempresa2` varchar(150) DEFAULT NULL, `emailempresa3` varchar(150) DEFAULT NULL, `emailempresa4` varchar(150) DEFAULT NULL, `codigotercero` int(10) unsigned DEFAULT NULL, `codusuarioa` int(10) unsigned DEFAULT NULL, `codusuariom` int(10) unsigned DEFAULT NULL, `fechaa` datetime DEFAULT NULL, `fecham` datetime DEFAULT NULL, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `contacto` -- /*!40000 ALTER TABLE `contacto` DISABLE KEYS */; /*!40000 ALTER TABLE `contacto` ENABLE KEYS */; -- -- Definition of table `documento` -- DROP TABLE IF EXISTS `documento`; CREATE TABLE `documento` ( `codigo` int(10) unsigned NOT NULL AUTO_INCREMENT, `documento` longblob, `fechaalta` datetime DEFAULT NULL, `version` varchar(40) DEFAULT NULL, `nombre` varchar(150) DEFAULT NULL, `ruta` varchar(255) DEFAULT NULL, `caracteristicas` text, `codusuarioa` int(10) unsigned DEFAULT NULL, `codusuariom` int(10) unsigned DEFAULT NULL, `fechaa` datetime DEFAULT NULL, `fecham` datetime DEFAULT NULL, `codigoregistro` int(10) unsigned DEFAULT NULL, `ventana` varchar(50) DEFAULT NULL, `guardarbd` char(1) DEFAULT NULL, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `documento` -- /*!40000 ALTER TABLE `documento` DISABLE KEYS */; /*!40000 ALTER TABLE `documento` ENABLE KEYS */; -- -- Definition of table `formapago` -- DROP TABLE IF EXISTS `formapago`; CREATE TABLE `formapago` ( `codigo` int(10) unsigned NOT NULL AUTO_INCREMENT, `nombre` varchar(100) NOT NULL DEFAULT '', `codusuarioa` int(10) unsigned DEFAULT NULL, `codusuariom` int(10) unsigned DEFAULT NULL, `fechaa` datetime DEFAULT NULL, `fecham` datetime DEFAULT NULL, `dias` int(10) unsigned DEFAULT NULL, `descripcion` varchar(250) DEFAULT NULL, PRIMARY KEY (`codigo`), UNIQUE KEY `formapago_nombre` (`nombre`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; -- -- Dumping data for table `formapago` -- /*!40000 ALTER TABLE `formapago` DISABLE KEYS */; INSERT INTO `formapago` (`codigo`,`nombre`,`codusuarioa`, `codusuariom`,`fechaa`,`fecham`,`dias`,`descripcion`) VALUES (1,'Contado',1,NULL,'2008-01-25 17:41:30',NULL,0,'Contado'), (2,'15 días',1,1,'2008-01-25 17:41:40','2008-01-25 17:42:04',15,'Quince días'), (3,'60 días',1,NULL,'2008-01-25 17:41:52',NULL,60,'60 días'); /*!40000 ALTER TABLE `formapago` ENABLE KEYS */; - -- Definition of table `incidencia` -- DROP TABLE IF EXISTS `incidencia`; CREATE TABLE `incidencia` ( `codigo` int(10) unsigned NOT NULL AUTO_INCREMENT, `fecha` datetime DEFAULT NULL, `codigocliente` int(10) unsigned DEFAULT NULL, `importecoste` float DEFAULT NULL, `importecliente` float DEFAULT NULL, `asunto` varchar(255) DEFAULT NULL, `incidencia` text, `incidenciaresolucion` text, `fecharesolucion` datetime DEFAULT NULL, `estado` varchar(30) DEFAULT NULL, `tipo` varchar(30) DEFAULT NULL, `codigotecnico` int(10) unsigned DEFAULT NULL, `prioridad` varchar(10) DEFAULT NULL, `contacto` varchar(100) DEFAULT NULL, `completado` int(10) unsigned DEFAULT NULL, `fechavencimiento` datetime DEFAULT NULL, `codigorecurso` int(10) unsigned DEFAULT NULL, `codigocontacto` int(10) unsigned DEFAULT NULL, `codusuarioa` int(10) unsigned DEFAULT NULL, `codusuariom` int(10) unsigned DEFAULT NULL, `fechaa` datetime DEFAULT NULL, `fecham` datetime DEFAULT NULL, `aceptada` char(1) DEFAULT NULL, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Definition of table `parametro` -- DROP TABLE IF EXISTS `parametro`; CREATE TABLE `parametro` ( `codigo` int(10) unsigned NOT NULL AUTO_INCREMENT, `nombre` varchar(50) DEFAULT NULL, `valor` varchar(100) DEFAULT NULL, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; -- -- Dumping data for table `parametro` -- /*!40000 ALTER TABLE `parametro` DISABLE KEYS */; INSERT INTO `parametro` (`codigo`,`nombre`,`valor`) VALUES (1,'version','1.0.1.50 (25-01-2008)'); /*!40000 ALTER TABLE `parametro` ENABLE KEYS */; -- -- Definition of table `parcela` -- DROP TABLE IF EXISTS `parcela`; CREATE TABLE `parcela` ( `codigo` int(10) unsigned NOT NULL AUTO_INCREMENT, `nombre` varchar(100) NOT NULL DEFAULT '', `lugar` varchar(100) DEFAULT NULL, `superficie` float DEFAULT NULL, `numeropies` float DEFAULT NULL, `poligono` varchar(45) DEFAULT NULL, `parcela` varchar(45) DEFAULT NULL, `fechaalta` datetime DEFAULT NULL, `codigovariedad` int(10) unsigned DEFAULT NULL, `fechaplantacion` datetime DEFAULT NULL, `goterospie` float DEFAULT NULL, `litroshoragotero` float DEFAULT NULL, `observacion` text, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Dumping data for table `parcela` -- /*!40000 ALTER TABLE `parcela` DISABLE KEYS */; /*!40000 ALTER TABLE `parcela` ENABLE KEYS */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
Artículos relacionados
- Tipos de datos data types en el motor de base de datos PostgreSQL.
- Tipos de datos en MySQL Server.
- Acceso al motor de base de datos PostgreSQL desde Windows XP con ODBC.
- Instalar y administrar PostgreSQL en Microsoft Windows 7.
- Cómo crear un sitio web con secciones dinámicas con HTML, PHP, Delphi y MySQL.
- Cómo insertar ficheros en un campo de una tabla MySQL con Delphi.
- Exportar una tabla Microsoft Access a MySQL.
- Artículos, manuales, trucos sobre el motor de base de datos PostgreSQL.
- Instalar el motor de base de datos PostgreSQL 8.4 en GNU Linux Ubuntu 10.
- Artículos del Proyecto AjpdSoft sobre MySQL Server.
- Foros del Proyecto AjpdSoft sobre MySQL Server.
- Ejecutar aplicaciones Microsoft Windows en GNU Linux con Wine.
- AjpdSoft Administración Bases de Datos.
- AjpdSoft Copia Seguridad MySQL.
- Definición SQL.
- Definición ODBC.
Créditos
Artículo realizado íntegramente por Alonsojpd miembro fundador del proyecto AjpdSoft.
Suscribirse a:
Entradas (Atom)
























