使用UTF-8编码导出HSQLDB数据库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用UTF-8编码导出HSQLDB数据库相关的知识,希望对你有一定的参考价值。
我正在尝试导出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
答案
您可以使用以下过程:
- 在源数据库中,创建与原始表具有完全相同列的TEXT表。每张桌子都使用
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
- 现在,您将拥有几个带有UTF8编码的
thecopyname.csv
文件(每个文件都有自己的名称)。 - 在目标数据库上使用相反的过程。您需要显式创建TEXT表,然后使用qazxsw poi
另一答案
编码看起来像Unicode(一到四个十六进制数字)。在SET TABLE thecopyname SOURCE 'thecopyname.csv;encoding=UTF-8'
中尝试这个(快速和脏):
bash
以上是关于使用UTF-8编码导出HSQLDB数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何在 HSQLDB 中使用多行 SELECT 语句导出数据?
使用 oracle sql developer 将 utf-8 数据导出到文本文件