Перемещение базы данных PostgreSQL завершается неудачно для символов, отличных от ascii, со значением «long long»
# 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
Затем я получаю эту ошибку, и импорт не удается для всей таблицы.
psql: /home/me/myDatabase.tar: 660266: ОШИБКА: значение слишком длинное для изменения типа символа (100) КОНТЕКСТ: COPY myTable, строка 591, столбец myColumn: «Бывший член проекта Госдепартамента« Будущее Ирака »и сейчас» на атлантическом куре ... »
Эти шляпки - это раздражающие фигурные одинарные и двойные кавычки. Мне кажется, что они сначала помещаются в столбец, но где-то в процессе экспорта / импорта они расширяются, а затем больше не помещаются в столбец с изменяющимися символами (100).
На самом деле я перемещаю действующую базу данных на сервер, для которого у меня мало прав, поэтому было бы неплохо решение только для SQL. Есть ли способ сделать что-то вроде
UPDATE myTable SET myColumn = removeNonAscii(myColumn) WHERE hasNonAscii(myColumn)
РЕДАКТИРОВАТЬ: habe получил его. я изменил
createdb -h myServer -U myUser -T template0 myDatabaseCopy
в
createdb -h myServer -U myUser -T template0 -E UTF8 myDatabaseCopy
и это помогло.