Thread: Change postgresql encoding

Change postgresql encoding

From
Oliver
Date:
Hi,
I have a new postgresql installation done, it has utf-8 encoding.
I have to make a Oracle database migration and it has ISO8859-15 encoding, should I change postgresql encoding to same Oracle encoding or with utf-8 it should go well?
If I want change postgresql encoding, I have understood that I should reinstall postgresql (I do installation from rpm official binary files for red hat), someone knows say me if when you install software it asks you for choosing encoding or it puts it from what you have in the system? (I did installation from many time ago and I don't remember it).
Thanks beforehand.

P.D.: I've tried change encoding to a new postgresql database to latin9, but it gives me error for having utf-8. 

Regards...

Re: Change postgresql encoding

From
Adrian Klaver
Date:
On 02/08/2015 11:20 AM, Oliver wrote:
> Hi,
> I have a new postgresql installation done, it has utf-8 encoding.
> I have to make a Oracle database migration and it has ISO8859-15
> encoding, should I change postgresql encoding to same Oracle encoding or
> with utf-8 it should go well?
> If I want change postgresql encoding, I have understood that I should
> reinstall postgresql (I do installation from rpm official binary files
> for red hat), someone knows say me if when you install software it asks
> you for choosing encoding or it puts it from what you have in the
> system? (I did installation from many time ago and I don't remember it).
> Thanks beforehand.

What version of Postgres?

What version of RedHat?
>
> P.D.: I've tried change encoding to a new postgresql database to latin9,
> but it gives me error for having utf-8.

What was the command you gave?

What was the exact error message?

>
> Regards...


--
Adrian Klaver
adrian.klaver@aklaver.com


Re: Change postgresql encoding

From
BladeOfLight16
Date:
On Sun, Feb 8, 2015 at 2:20 PM, Oliver <ofabelo@gmail.com> wrote:
If I want change postgresql encoding, I have understood that I should reinstall postgresql (I do installation from rpm official binary files for red hat)

I can't answer your question about whether the encodings need to be the same, but I'm pretty sure that's not true. CREATE DATABASE has options to set the encoding for a database:

CREATE DATABASE korean WITH ENCODING 'EUC_KR' LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;

(From http://www.postgresql.org/docs/9.4/static/multibyte.html)

To change the encoding of an existing PG database, you have to 1) dump it, 2) create a new, empty DB with the desired encoding, and 3) import the dump into the new DB. So you can't really change it "on the fly," but it can be done at creation time.

Re: Change postgresql encoding

From
Oliver
Date:
2015-02-08 20:44 GMT+00:00 Adrian Klaver <adrian.klaver@aklaver.com>:
On 02/08/2015 11:20 AM, Oliver wrote:
Hi,
I have a new postgresql installation done, it has utf-8 encoding.
I have to make a Oracle database migration and it has ISO8859-15
encoding, should I change postgresql encoding to same Oracle encoding or
with utf-8 it should go well?
If I want change postgresql encoding, I have understood that I should
reinstall postgresql (I do installation from rpm official binary files
for red hat), someone knows say me if when you install software it asks
you for choosing encoding or it puts it from what you have in the
system? (I did installation from many time ago and I don't remember it).
Thanks beforehand.

What version of Postgres?

9.3.4
 

What version of RedHat?

Red Hat Enterprise Linux Server release 6.5
 


P.D.: I've tried change encoding to a new postgresql database to latin9,
but it gives me error for having utf-8.

What was the command you gave?

CREATE DATABASE xxx
  WITH ENCODING 'LATIN9'
       OWNER=xxx
       TEMPLATE=template0
       LC_COLLATE='es_ES.latin9'
       LC_CTYPE='es_ES.latin9'
       CONNECTION LIMIT=-1
       TABLESPACE=xxx;
 

What was the exact error message?


regional configuration name not valid <<es_ES.latin9>>
SQL state: 42809

I've tried es_ES.iso8859-15 and same error.
I'm using pgadmin III 1.18.1 for running querys. When I run "SHOW client_encoding;" it shows UNICODE.
 

Regards...


Thanks beforehand.
 

--
Adrian Klaver
adrian.klaver@aklaver.com

Re: Change postgresql encoding

From
Oliver
Date:
2015-02-08 20:50 GMT+00:00 BladeOfLight16 <bladeoflight16@gmail.com>:
On Sun, Feb 8, 2015 at 2:20 PM, Oliver <ofabelo@gmail.com> wrote:
If I want change postgresql encoding, I have understood that I should reinstall postgresql (I do installation from rpm official binary files for red hat)

I can't answer your question about whether the encodings need to be the same, but I'm pretty sure that's not true. CREATE DATABASE has options to set the encoding for a database:

CREATE DATABASE korean WITH ENCODING 'EUC_KR' LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;

(From http://www.postgresql.org/docs/9.4/static/multibyte.html)

To change the encoding of an existing PG database, you have to 1) dump it, 2) create a new, empty DB with the desired encoding, and 3) import the dump into the new DB. So you can't really change it "on the fly," but it can be done at creation time.

How it would be if I want latin9 encoding? I'm trying the next but it shows that it is not valid (es_ES.latin9):

CREATE DATABASE xxx
  WITH ENCODING 'LATIN9'
       OWNER=xxx
       TEMPLATE=template0
       LC_COLLATE='es_ES.latin9'
       LC_CTYPE='es_ES.latin9'
       CONNECTION LIMIT=-1
       TABLESPACE=xxx;

Thanks beforehand.

Re: Change postgresql encoding

From
Oliver
Date:
2015-02-09 7:52 GMT+00:00 Oliver <ofabelo@gmail.com>:
2015-02-08 20:44 GMT+00:00 Adrian Klaver <adrian.klaver@aklaver.com>:
On 02/08/2015 11:20 AM, Oliver wrote:
Hi,
I have a new postgresql installation done, it has utf-8 encoding.
I have to make a Oracle database migration and it has ISO8859-15
encoding, should I change postgresql encoding to same Oracle encoding or
with utf-8 it should go well?
If I want change postgresql encoding, I have understood that I should
reinstall postgresql (I do installation from rpm official binary files
for red hat), someone knows say me if when you install software it asks
you for choosing encoding or it puts it from what you have in the
system? (I did installation from many time ago and I don't remember it).
Thanks beforehand.

What version of Postgres?

9.3.4
 

What version of RedHat?

Red Hat Enterprise Linux Server release 6.5
 


P.D.: I've tried change encoding to a new postgresql database to latin9,
but it gives me error for having utf-8.

What was the command you gave?

CREATE DATABASE xxx
  WITH ENCODING 'LATIN9'
       OWNER=xxx
       TEMPLATE=template0
       LC_COLLATE='es_ES.latin9'
       LC_CTYPE='es_ES.latin9'
       CONNECTION LIMIT=-1
       TABLESPACE=xxx;
 

What was the exact error message?


regional configuration name not valid <<es_ES.latin9>>
SQL state: 42809

I've tried es_ES.iso8859-15 and same error.
I'm using pgadmin III 1.18.1 for running querys. When I run "SHOW client_encoding;" it shows UNICODE.
 

Regards...


Thanks beforehand.
 

--
Adrian Klaver
adrian.klaver@aklaver.com


If I set encoding to latin9, lc_collate and lc_ctype to 'C', database is created correctly, but I'm not sure if it is ok :-? I want have database with iso8859-15 encoding.
My system has, when I run 'locale', the next:

LANG=es_ES.UTF-8
LC_CTYPE="es_ES.UTF-8"
LC_NUMERIC="es_ES.UTF-8"
LC_TIME="es_ES.UTF-8"
LC_COLLATE="es_ES.UTF-8"
LC_MONETARY="es_ES.UTF-8"
LC_MESSAGES="es_ES.UTF-8"
LC_PAPER="es_ES.UTF-8"
LC_NAME="es_ES.UTF-8"
LC_ADDRESS="es_ES.UTF-8"
LC_TELEPHONE="es_ES.UTF-8"
LC_MEASUREMENT="es_ES.UTF-8"
LC_IDENTIFICATION="es_ES.UTF-8"
LC_ALL=

Thanks beforehand.


Re: Change postgresql encoding

From
Oliver
Date:
2015-02-09 7:54 GMT+00:00 Oliver <ofabelo@gmail.com>:
2015-02-08 20:50 GMT+00:00 BladeOfLight16 <bladeoflight16@gmail.com>:
On Sun, Feb 8, 2015 at 2:20 PM, Oliver <ofabelo@gmail.com> wrote:
If I want change postgresql encoding, I have understood that I should reinstall postgresql (I do installation from rpm official binary files for red hat)

I can't answer your question about whether the encodings need to be the same, but I'm pretty sure that's not true. CREATE DATABASE has options to set the encoding for a database:

CREATE DATABASE korean WITH ENCODING 'EUC_KR' LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;

(From http://www.postgresql.org/docs/9.4/static/multibyte.html)

To change the encoding of an existing PG database, you have to 1) dump it, 2) create a new, empty DB with the desired encoding, and 3) import the dump into the new DB. So you can't really change it "on the fly," but it can be done at creation time.

How it would be if I want latin9 encoding? I'm trying the next but it shows that it is not valid (es_ES.latin9):

CREATE DATABASE xxx
  WITH ENCODING 'LATIN9'
       OWNER=xxx
       TEMPLATE=template0
       LC_COLLATE='es_ES.latin9'
       LC_CTYPE='es_ES.latin9'
       CONNECTION LIMIT=-1
       TABLESPACE=xxx;

Thanks beforehand.


If I set encoding to latin9, lc_collate and lc_ctype to 'C', database is created correctly, but I'm not sure if it is ok :-? I want have database with iso8859-15 encoding.
My system has, when I run 'locale', the next:

LANG=es_ES.UTF-8
LC_CTYPE="es_ES.UTF-8"
LC_NUMERIC="es_ES.UTF-8"
LC_TIME="es_ES.UTF-8"
LC_COLLATE="es_ES.UTF-8"
LC_MONETARY="es_ES.UTF-8"
LC_MESSAGES="es_ES.UTF-8"
LC_PAPER="es_ES.UTF-8"
LC_NAME="es_ES.UTF-8"
LC_ADDRESS="es_ES.UTF-8"
LC_TELEPHONE="es_ES.UTF-8"
LC_MEASUREMENT="es_ES.UTF-8"
LC_IDENTIFICATION="es_ES.UTF-8"
LC_ALL=

Thanks beforehand. 

Re: Change postgresql encoding

From
Nicolas Paris
Date:
Hello,

TRY in psql :

update pg_database set encoding = pg_char_to_encoding('your_encoding') where datname = 'your_data_base';

Works for postgres 9.3

Nicolas PARIS

2015-02-09 9:11 GMT+01:00 Oliver <ofabelo@gmail.com>:
2015-02-09 7:54 GMT+00:00 Oliver <ofabelo@gmail.com>:
2015-02-08 20:50 GMT+00:00 BladeOfLight16 <bladeoflight16@gmail.com>:
On Sun, Feb 8, 2015 at 2:20 PM, Oliver <ofabelo@gmail.com> wrote:
If I want change postgresql encoding, I have understood that I should reinstall postgresql (I do installation from rpm official binary files for red hat)

I can't answer your question about whether the encodings need to be the same, but I'm pretty sure that's not true. CREATE DATABASE has options to set the encoding for a database:

CREATE DATABASE korean WITH ENCODING 'EUC_KR' LC_COLLATE='ko_KR.euckr' LC_CTYPE='ko_KR.euckr' TEMPLATE=template0;

(From http://www.postgresql.org/docs/9.4/static/multibyte.html)

To change the encoding of an existing PG database, you have to 1) dump it, 2) create a new, empty DB with the desired encoding, and 3) import the dump into the new DB. So you can't really change it "on the fly," but it can be done at creation time.

How it would be if I want latin9 encoding? I'm trying the next but it shows that it is not valid (es_ES.latin9):

CREATE DATABASE xxx
  WITH ENCODING 'LATIN9'
       OWNER=xxx
       TEMPLATE=template0
       LC_COLLATE='es_ES.latin9'
       LC_CTYPE='es_ES.latin9'
       CONNECTION LIMIT=-1
       TABLESPACE=xxx;

Thanks beforehand.


If I set encoding to latin9, lc_collate and lc_ctype to 'C', database is created correctly, but I'm not sure if it is ok :-? I want have database with iso8859-15 encoding.
My system has, when I run 'locale', the next:

LANG=es_ES.UTF-8
LC_CTYPE="es_ES.UTF-8"
LC_NUMERIC="es_ES.UTF-8"
LC_TIME="es_ES.UTF-8"
LC_COLLATE="es_ES.UTF-8"
LC_MONETARY="es_ES.UTF-8"
LC_MESSAGES="es_ES.UTF-8"
LC_PAPER="es_ES.UTF-8"
LC_NAME="es_ES.UTF-8"
LC_ADDRESS="es_ES.UTF-8"
LC_TELEPHONE="es_ES.UTF-8"
LC_MEASUREMENT="es_ES.UTF-8"
LC_IDENTIFICATION="es_ES.UTF-8"
LC_ALL=

Thanks beforehand. 


Re: Change postgresql encoding

From
Vincent Veyron
Date:
On Mon, 9 Feb 2015 08:11:25 +0000
Oliver <ofabelo@gmail.com> wrote:

> 2015-02-09 7:52 GMT+00:00 Oliver <ofabelo@gmail.com>:
>
> > regional configuration name not valid <<es_ES.latin9>>
> > SQL state: 42809
> >
> > I've tried es_ES.iso8859-15 and same error.

>
> If I set encoding to latin9, lc_collate and lc_ctype to 'C', database is
> created correctly, but I'm not sure if it is ok :-? I want have database
> with iso8859-15 encoding.
> My system has, when I run 'locale', the next:
>


The locale must be installed on your system (I work with Debian, so 'dpkg-reconfigure locales'; don't know for RHEL)

Here are the command I used in a similar situation:

#create a latin9 database on a UTF8 cluster:
createdb litigios -E LATIN9 -T template0 -l es_ES.iso885915@euro
psql -c "ALTER DATABASE litigios set lc_time='es_ES.iso885915@euro'" litigios

#load the data (here a latin9 encoded pg_dump)
export PGCLIENTENCODING=LATIN9;
psql -f /path/to/dump/file litigios

--
                    Salutations, Vincent Veyron

https://marica.fr/
Gestion des contentieux, des dossiers de sinistres assurance et des contrats pour le service juridique


Re: Change postgresql encoding

From
Oliver
Date:
2015-02-09 14:01 GMT+00:00 Vincent Veyron <vv.lists@wanadoo.fr>:
On Mon, 9 Feb 2015 08:11:25 +0000
Oliver <ofabelo@gmail.com> wrote:

> 2015-02-09 7:52 GMT+00:00 Oliver <ofabelo@gmail.com>:
>
> > regional configuration name not valid <<es_ES.latin9>>
> > SQL state: 42809
> >
> > I've tried es_ES.iso8859-15 and same error.

>
> If I set encoding to latin9, lc_collate and lc_ctype to 'C', database is
> created correctly, but I'm not sure if it is ok :-? I want have database
> with iso8859-15 encoding.
> My system has, when I run 'locale', the next:
>


The locale must be installed on your system (I work with Debian, so 'dpkg-reconfigure locales'; don't know for RHEL)

Here are the command I used in a similar situation:

#create a latin9 database on a UTF8 cluster:
createdb litigios -E LATIN9 -T template0 -l es_ES.iso885915@euro
psql -c "ALTER DATABASE litigios set lc_time='es_ES.iso885915@euro'" litigios

#load the data (here a latin9 encoded pg_dump)
export PGCLIENTENCODING=LATIN9;
psql -f /path/to/dump/file litigios


Thank you very much, it worked perfectly! (I were trying es_ES.iso885915 .. and it worked with es_ES.iso885915@euro).
Thanks.

Regards... 

Re: [ADMIN] Change postgresql encoding

From
Jeremiah Ocasio
Date:
Hello Adrian,

Not sure if this is what your looking for insofar as a solution but have you taken a look at this page from the documentation.


 

On Mon, Feb 9, 2015 at 12:11 AM, Oliver <ofabelo@gmail.com> wrote:
2015-02-09 7:52 GMT+00:00 Oliver <ofabelo@gmail.com>:
2015-02-08 20:44 GMT+00:00 Adrian Klaver <adrian.klaver@aklaver.com>:
On 02/08/2015 11:20 AM, Oliver wrote:
Hi,
I have a new postgresql installation done, it has utf-8 encoding.
I have to make a Oracle database migration and it has ISO8859-15
encoding, should I change postgresql encoding to same Oracle encoding or
with utf-8 it should go well?
If I want change postgresql encoding, I have understood that I should
reinstall postgresql (I do installation from rpm official binary files
for red hat), someone knows say me if when you install software it asks
you for choosing encoding or it puts it from what you have in the
system? (I did installation from many time ago and I don't remember it).
Thanks beforehand.

What version of Postgres?

9.3.4
 

What version of RedHat?

Red Hat Enterprise Linux Server release 6.5
 


P.D.: I've tried change encoding to a new postgresql database to latin9,
but it gives me error for having utf-8.

What was the command you gave?

CREATE DATABASE xxx
  WITH ENCODING 'LATIN9'
       OWNER=xxx
       TEMPLATE=template0
       LC_COLLATE='es_ES.latin9'
       LC_CTYPE='es_ES.latin9'
       CONNECTION LIMIT=-1
       TABLESPACE=xxx;
 

What was the exact error message?


regional configuration name not valid <<es_ES.latin9>>
SQL state: 42809

I've tried es_ES.iso8859-15 and same error.
I'm using pgadmin III 1.18.1 for running querys. When I run "SHOW client_encoding;" it shows UNICODE.
 

Regards...


Thanks beforehand.
 

--
Adrian Klaver
adrian.klaver@aklaver.com


If I set encoding to latin9, lc_collate and lc_ctype to 'C', database is created correctly, but I'm not sure if it is ok :-? I want have database with iso8859-15 encoding.
My system has, when I run 'locale', the next:

LANG=es_ES.UTF-8
LC_CTYPE="es_ES.UTF-8"
LC_NUMERIC="es_ES.UTF-8"
LC_TIME="es_ES.UTF-8"
LC_COLLATE="es_ES.UTF-8"
LC_MONETARY="es_ES.UTF-8"
LC_MESSAGES="es_ES.UTF-8"
LC_PAPER="es_ES.UTF-8"
LC_NAME="es_ES.UTF-8"
LC_ADDRESS="es_ES.UTF-8"
LC_TELEPHONE="es_ES.UTF-8"
LC_MEASUREMENT="es_ES.UTF-8"
LC_IDENTIFICATION="es_ES.UTF-8"
LC_ALL=

Thanks beforehand.





--
Jeremiah Ocasio
jocasio@kaleidoscopemediasystems.com



1200 Westlake Ave N, Suite 604
Seattle, WA 98109
Tel: 855-247-5231
Fax: 206-400-2712

This electronic mail communication is intended only for the individual or entity to which it is addressed and contains privileged and confidential information. If you receive this communication in error, please advise us by return e-mail or call us immediately at 855-247-5231 and delete this communication and all copies and attachments. Any dissemination, distribution or copying of this communication is strictly prohibited.

IRS Circular 230 disclosure: To ensure compliance with requirements imposed by the IRS and other taxing authorities, we inform you that any tax advice contained in this communication (including any attachments) is not intended or written to be used, and cannot be used, for the purpose of (i) avoiding penalties that may be imposed on any taxpayer or (ii) promoting, marketing or recommending to another party any transaction or matter addressed herein.

Re: [ADMIN] Change postgresql encoding

From
Oliver
Date:
Thanks, problem was mine, all is ok now, thanks.
I were putting es_ES@iso885915 or es_ES@latin9 and it wasn't working .. Solution was using es_ES.iso885915@euro for collation and ctype (and latin9 for encoding).
Thanks to all!

Regards...

2015-02-10 23:26 GMT+00:00 Jeremiah Ocasio <jocasio@kaleidoscopemediasystems.com>:
Hello Adrian,

Not sure if this is what your looking for insofar as a solution but have you taken a look at this page from the documentation.


 

On Mon, Feb 9, 2015 at 12:11 AM, Oliver <ofabelo@gmail.com> wrote:
2015-02-09 7:52 GMT+00:00 Oliver <ofabelo@gmail.com>:
2015-02-08 20:44 GMT+00:00 Adrian Klaver <adrian.klaver@aklaver.com>:
On 02/08/2015 11:20 AM, Oliver wrote:
Hi,
I have a new postgresql installation done, it has utf-8 encoding.
I have to make a Oracle database migration and it has ISO8859-15
encoding, should I change postgresql encoding to same Oracle encoding or
with utf-8 it should go well?
If I want change postgresql encoding, I have understood that I should
reinstall postgresql (I do installation from rpm official binary files
for red hat), someone knows say me if when you install software it asks
you for choosing encoding or it puts it from what you have in the
system? (I did installation from many time ago and I don't remember it).
Thanks beforehand.

What version of Postgres?

9.3.4
 

What version of RedHat?

Red Hat Enterprise Linux Server release 6.5
 


P.D.: I've tried change encoding to a new postgresql database to latin9,
but it gives me error for having utf-8.

What was the command you gave?

CREATE DATABASE xxx
  WITH ENCODING 'LATIN9'
       OWNER=xxx
       TEMPLATE=template0
       LC_COLLATE='es_ES.latin9'
       LC_CTYPE='es_ES.latin9'
       CONNECTION LIMIT=-1
       TABLESPACE=xxx;
 

What was the exact error message?


regional configuration name not valid <<es_ES.latin9>>
SQL state: 42809

I've tried es_ES.iso8859-15 and same error.
I'm using pgadmin III 1.18.1 for running querys. When I run "SHOW client_encoding;" it shows UNICODE.
 

Regards...


Thanks beforehand.
 

--
Adrian Klaver
adrian.klaver@aklaver.com


If I set encoding to latin9, lc_collate and lc_ctype to 'C', database is created correctly, but I'm not sure if it is ok :-? I want have database with iso8859-15 encoding.
My system has, when I run 'locale', the next:

LANG=es_ES.UTF-8
LC_CTYPE="es_ES.UTF-8"
LC_NUMERIC="es_ES.UTF-8"
LC_TIME="es_ES.UTF-8"
LC_COLLATE="es_ES.UTF-8"
LC_MONETARY="es_ES.UTF-8"
LC_MESSAGES="es_ES.UTF-8"
LC_PAPER="es_ES.UTF-8"
LC_NAME="es_ES.UTF-8"
LC_ADDRESS="es_ES.UTF-8"
LC_TELEPHONE="es_ES.UTF-8"
LC_MEASUREMENT="es_ES.UTF-8"
LC_IDENTIFICATION="es_ES.UTF-8"
LC_ALL=

Thanks beforehand.





--
Jeremiah Ocasio
jocasio@kaleidoscopemediasystems.com



1200 Westlake Ave N, Suite 604
Seattle, WA 98109
Tel: 855-247-5231
Fax: 206-400-2712

This electronic mail communication is intended only for the individual or entity to which it is addressed and contains privileged and confidential information. If you receive this communication in error, please advise us by return e-mail or call us immediately at 855-247-5231 and delete this communication and all copies and attachments. Any dissemination, distribution or copying of this communication is strictly prohibited.

IRS Circular 230 disclosure: To ensure compliance with requirements imposed by the IRS and other taxing authorities, we inform you that any tax advice contained in this communication (including any attachments) is not intended or written to be used, and cannot be used, for the purpose of (i) avoiding penalties that may be imposed on any taxpayer or (ii) promoting, marketing or recommending to another party any transaction or matter addressed herein.