sql >> Databáze >  >> RDS >> PostgreSQL

Jak změníte kódování znaků postgresové databáze?

Za prvé, Danielova odpověď je správná a bezpečná možnost.

Pro konkrétní případ změny z SQL_ASCII na něco jiného můžete podvádět a jednoduše šťouchnout do katalogu pg_database, abyste znovu přiřadili kódování databáze. To předpokládá, že jste již uložili jakékoli jiné znaky než ASCII v očekávaném kódování (nebo jste prostě nepoužili žádné jiné znaky než ASCII).

Pak můžete:

update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'thedb'

Tím se nezmění řazení databáze, pouze způsob, jakým se kódované bajty převádějí na znaky (takže nyní length('£123') vrátí 4 místo 5). Pokud databáze používá řazení 'C', nemělo by dojít k žádné změně řazení řetězců ASCII. Pravděpodobně však budete muset znovu sestavit všechny indexy obsahující jiné než ASCII znaky.

Varování emptor. Dumping a reloading poskytuje způsob, jak zkontrolovat, zda je obsah vaší databáze skutečně v kódování, které očekáváte, a to nikoli. A pokud se ukáže, že máte v databázi nějaká špatně zakódovaná data, bude záchrana obtížná. Takže pokud je to možné, vypište a znovu inicializujte.



  1. Jak vytvořit tabulku pomocí databáze sqlite v Androidu?

  2. Minimalizace dopadu rozšíření sloupce IDENTITY – část 4

  3. Proč heslo password_verify vrací hodnotu false?

  4. Jak používat REPLACE v SQL