gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:12:31 25 4
gpt4 key购买 nike

我正在尝试导出 GeoTools HSQL 2 数据库并将其加载回 HSQL 1 以用于需要旧数据库格式的遗留系统。这些表格包括像度数符号这样的字符。但是,它以转义序列 \u0080 而不是编码字符的形式出现。我需要修复该问题或让 HSQL 1 import 将转义字符转换回正确的编码。

例如

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

最佳答案

您可以使用以下过程:

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

关于java - 使用 UTF-8 编码导出 HSQLDB 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54208286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com