我正在尝试导出GeoTools HSQL 2数据库并将其加载回HSQL 1,以用于需要较旧数据库格式的遗留系统。表格包括度数符号等字符。然而,它作为转义序列\u0080
而不是编码字符出现。我需要修复它或让HSQL 1导入将转义后的字符转换回正确的编码。
EG
cp modules/plugin/epsg-hsql/src/main/resources/org/geotools/referencing/factory/epsg/EPSG.zip /tmp
cd /tmp
unzip EPSG.zip
java -jar hsqldb-2.4.1.jar
# For the file, put jdbc:hsqldb:file:/tmp/EPSG
SELECT 'epsg-dump'
在结果中我看到像这样的\u00b5
:
INSERT INTO EPSG_ALIAS VALUES(389,'epsg_unitofmeasure',9109,7302,'\u00b5rad','')
查看hsqldb,我不知道如何控制正在写入的数据的编码,假设这是正确的位置:
https://github.com/ryenus/hsqldb/blob/master/src/org/hsqldb/scriptio/ScriptWriterText.java
您可以使用以下过程:
CREATE TEXT TABLE thecopyname (LIKE thesourcename)
。SET TABLE thecopyname SOURCE 'thecopyname.csv;encoding=UTF-8'
表使用copy
。thecopyname
插入每个SELECT * FROM thesourcename
表。SET TABLE thecopyname SOURCE OFF
使用thecopyname
thecopyname.csv
文件(每个文件都有自己的名称)。编码看起来像Unicode(一到四个十六进制数字)。在SET TABLE thecopyname SOURCE 'thecopyname.csv;encoding=UTF-8'
中尝试这个(快速和脏):
bash