|
|||||||||||||
| Registrarse | FAQ/Ayuda | Posts de hoy | Tags | ||||||||||
|
| |||
| Tags: Ninguna | |||
|
|
|
LinkBack | Herramientas |
|
|
#1 |
|
The Kitty
Registrado: agosto-2010
Posts: 78
![]() |
[miniguía] Pasar una base PSQL de SQL_ASCII a UTF8
En mi (ahora ex-) pega tuve que realizar este proceso para un cliente, y hay que decir que hay super poca documentación al respecto. De hecho en español no encontré nada.
Es por eso que decidí plasmar aqui la guía que realicé allá, para conocimiento de todos ___________________________________________ Primero que todo, debo aclarar: - este procedimiento lo realicé por completo en PostgreSQL 8.4. Hay un paso que por alguna razón no se puede realizar en PSQL 8.2 (cambiar el nombre directamente de la BD, al menos no desde el pgAdmin) - estos pasos fueron probados integramente en entorno Windows (lo probé en Windows 2003 Server y Windows 7), pero en la plataforma *nix es casi la misma historia (no sé si hay pgAdmin para Linux) - He de creer que esto se da por asumido, pero para efectos de seguridad, realizar este proceso cuando no haya ningún usuario trabajando en la base de datos. ____________________________________________ Pues bien, de lleno a la guía: 1.- Descargar la aplicación iconv e instalarla 1.5- Para efectos de comodidad, copiar todo el contenido de la carpeta bin de iconv a la carpeta bin de los ejecutables de PostgreSQL 2.- Desde una ventana de CMD ir a la ruta de los ejecutables de PSQL. Aquí se va a realizar un respaldo de la base de datos que se desea convertir. Para eso, escribir el siguiente comando: Code:
pg_dump -U <usuario> -W PSQLDB > respaldo.dmp Cabe mencionar que no aparecerá ningún indicador de que el proceso ha sido efectuado correctamente, más que volver al prompt. 3.- Ahora viene lo interesante: Realizar la conversión como tal. Es aquí donde entra en acción la aplicación iconv (se copiaron los archivos a la carpeta de PostgreSQL para no tener que estar trasladando el respaldo a cada rato). Entonces, escribir el siguiente comando Code:
iconv -f ISO8859-1 -t UTF-8 respaldo.dmp > respaldo8.dmp Nuevamente, no saldrá nada que indique que la conversión fue realizada exitosamente. Hay que asumir que sí. 4.- Para efectos de archivo (y en caso que ocurra algún incidente), yo prefiero siempre importar el respaldo en una base nueva. Entonces, desde el pgAdmin crear una base de datos y dejarla altiro con la codificación UTF-8. Ejemplo: Base8 5.- Finalmente se importará el archivo convertido en la base recién creada. Para eso, escribir el siguiente comando: Code:
psql -U <usuario> -W Base8 < respaldo8.dmp Aquí se verán correr varios procesos (primero los create table, luego los insert, luego los create index...), hasta que finalmente se vuelva al prompt. Este proceso variará en duración según el tamaño de la base de datos y el poder del servidor de la BD. Una vez realizado todo esto, la base de datos Base8 tendrá el contenido de PSQLDB, pero con codificación UTF-8 6.- (opcional) En caso que la aplicación o servicio que utilice la base de datos apunte a un nombre específico, no queda más que intercambiar nombres. Ejemplo, que PSQLDB se llame PSQLDB_backup y así Base8 pase a llamarse PSQLDB Editado por WannyTiggah en 24-ago-2010 a las 23:43. |
|
|
|
|
|
#2 |
|
Zend Certified Engineer
ex-admin :)
![]() |
Re: [miniguía] Pasar una base PSQL de SQL_ASCII a UTF8
uh que buena guía, está clarísima, gracias !
Pregunta::: en pg_dump no existe algún parámetro que te permita ahorrarte todo esto y pasarlo al tiro a UTF-8? Lo otro: al crear la nueva DB, no se olviden de colocarle el nuevo charset: Code:
CREATE DATABASE Base8 ENCODING='UTF8' |
|
|
|
|
|
#3 |
|
The Kitty
Registrado: agosto-2010
Posts: 78
![]() |
Re: [miniguía] Pasar una base PSQL de SQL_ASCII a UTF8
Es por eso que dije que los pasos los realicé yo en Windows =P
En el pgAdmin con un par de clics se especifica directamente la codificación de la nueva BD ^^; En *nix tengo entendido que ya está el ejecutable iconv. En la carpeta bin del PSQL de Windows por razones que desconozco sólo viene incluido el iconv.dll, no el ejecutable. |
|
|
|
|
|
#4 |
|
Zend Certified Engineer
ex-admin :)
![]() |
Re: [miniguía] Pasar una base PSQL de SQL_ASCII a UTF8
aps, no había cachao esa partecita, leí postgres 8.2.4 y de ahí me fui directo al código y las conclusiones xD
En todo caso, en Linux es exactamente lo mismo... Eso sí, no en todas las distros viene iconv, tuve que hacer algo muy parecido hace tiempo atrás y en Suse por lo menos iconv no venía instalado predeterminadamente. pgAdmin es para niñitas, a lo macho (y el método más correcto por si queda la grande) es respaldando y creando la db nuevamente. Así se aprovecha de actualizar los índices tb y de hacer un pseudo-vacuum xD (pseudo porque los datos borrados en realidad para la nueva base nunca existieron También existe pgAdmin para Linux y todas las demás plataformas Saludos !! |
|
|
|
|
| Herramientas | |
|
|
|||||