# Dump my database to a tar file
pg_dump -f myDatabase.tar -F t -h myServer -U myUser -W -i myDatabase
# create a new database
createdb -h myServer -U myUser -T template0 myDatabaseCopy
# restore my database
pg_restore -d myDatabaseCopy -h myServer -U myUser myDatabase.tar
Quindi si verifica questo errore e l'importazione non riesce per un'intera tabella.Lo spostamento del database PostgreSQL ha esito negativo su caratteri non ascii con 'valore troppo lungo'
psql: /home/me/myDatabase.tar: 660.266: ERRORE: valore troppo lungo per tipo character varying (100) CONTESTO: COPIARE myTable, linea 591, colonna MyColumn: "L'ex Stato Departmentâs Afuture del progetto Iraqâ e ora all'Atlantico Cou ... "
Questi cappelli sono quelle fastidiose virgolette singole e doppie. In un primo momento mi sembra che si inseriscano nella colonna, ma da qualche parte nel processo di esportazione/importazione si espandono, e quindi non si adattano più alla colonna di variazione del carattere (100).
In realtà sto spostando un database attivo su un server per il quale ho scarse autorizzazioni, quindi una soluzione solo sql sarebbe ottima. C'è un modo per fare qualcosa di simile
UPDATE myTable SET myColumn = removeNonAscii(myColumn) WHERE hasNonAscii(myColumn)
EDIT: habe ottenuto. Ho cambiato
createdb -h myServer -U myUser -T template0 myDatabaseCopy
a
createdb -h myServer -U myUser -T template0 -E UTF8 myDatabaseCopy
e che ha fatto il trucco.