El traslado de la base de datos PostgreSQL falla en caracteres que no son ASCII con 'valor demasiado largo'
# 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
Entonces recibo este error y la importación falla para una tabla completa.
psql: /home/me/myDatabase.tar: 660266: ERROR: valor demasiado largo para el tipo de carácter variable (100) CONTEXTO: COPIA myTable, línea 591, columna myColumn: "Un ex miembro del Departamento de Estado del Proyecto de Futuro de Iraq y ahora en el mar Atlántico ... "
Esos hat-a son esas comillas simples y dobles que son tan molestas. Me parece que al principio encajan en la columna, pero en algún lugar del proceso de exportación / importación se expanden, y luego ya no caben en la columna de caracteres variables (100).
De hecho, estoy moviendo una base de datos en vivo a un servidor para el que tengo poco permiso, por lo que una solución de SQL Server sería genial. ¿Hay una manera de hacer algo como
UPDATE myTable SET myColumn = removeNonAscii(myColumn) WHERE hasNonAscii(myColumn)
EDIT: habe lo consiguió. Cambié
createdb -h myServer -U myUser -T template0 myDatabaseCopy
a
createdb -h myServer -U myUser -T template0 -E UTF8 myDatabaseCopy
Y eso hizo el truco.