使用UTF-8编码导出HSQLDB数据库

问题描述 投票:1回答:2

我正在尝试导出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

java utf-8 hsqldb geotools
2个回答
2
投票

您可以使用以下过程:

  1. 在源数据库中,创建与原始表具有完全相同列的TEXT表。每张桌子都使用CREATE TEXT TABLE thecopyname (LIKE thesourcename)
  2. 对每个SET TABLE thecopyname SOURCE 'thecopyname.csv;encoding=UTF-8'表使用copy
  3. 使用thecopyname插入每个SELECT * FROM thesourcename表。
  4. 每个SET TABLE thecopyname SOURCE OFF使用thecopyname
  5. 现在,您将拥有几个带有UTF8编码的thecopyname.csv文件(每个文件都有自己的名称)。
  6. 在目标数据库上使用相反的过程。您需要显式创建TEXT表,然后使用qazxsw poi

1
投票

编码看起来像Unicode(一到四个十六进制数字)。在SET TABLE thecopyname SOURCE 'thecopyname.csv;encoding=UTF-8'中尝试这个(快速和脏):

bash

© www.soinside.com 2019 - 2024. All rights reserved.