[ale] perl/postgresql question

Geoffrey Myers lists at serioustechnology.com
Thu Mar 31 12:04:05 EDT 2011


So, we are trying to convert a number of postgresql databases that were 
created with SQL_ASCII encoding to UTF8 encoding.  As such, I need to 
strip certain characters out of the data before dumping and reloading 
the new databases.  I'm using the following:

data =~ s/(.)/((ord($1) >= 0) && (ord($1) <= 8))
                 || (ord($1) == 11)
                 || ((ord($1) >= 13) && (ord($1) <= 31))
                 || ((ord($1) >= 127)) ?"": $1/egs;

Yet I'm getting the following error, which indicates a character that 
should be handled by the above code is still in the data:

pg_restore: [archiver (db)] COPY failed: ERROR:  invalid byte sequence 
for encoding "UTF8": 0xbd


Certainly, the above code should replace the 0xbd with nothing?

Any perl/postgres gurus out there?

-- 
Until later, Geoffrey

"I predict future happiness for America if they can prevent
the government from wasting the labors of the people under
the pretense of taking care of them."
- Thomas Jefferson


More information about the Ale mailing list