gpt4 book ai didi

mysql - 使用 XPath 和编码导入 xml

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

我想从带有德语变音符号 (ä,ö,ü) 的 xml 导入数据。为了分析问题,我将数据导入为 sql-insert、csv-file 和 xml-file。要查看导入的来源,条目会标有前缀 insert、csv 和 xml。结果如下:

来自 xml 源的变音符号未正确导入。
以下是生成此内容的代码:

表格定义

DROP TABLE IF EXISTS test01.animal;
CREATE TABLE test01.animal (
name VARCHAR(50) DEFAULT NULL
, category VARCHAR(50) DEFAULT NULL
) ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8 COLLATE = utf8_unicode_ci
;

插入

INSERT INTO test01.animal (name, category)
VALUES
('insert_snäke','reptile')
,('insert_frög','amphibian')
,('insert_tüna','fish')
,('insert_racoon','mammal')
;

CSV
数据

csv_snäke,reptile
csv_frög,amphibian
csv_tüna,fish
csv_racoon,mammal

sql

LOAD DATA INFILE 'C:/animals.csv'
INTO TABLE test01.animal
FIELDS TERMINATED BY ','
;

XML
数据

<?xml version="1.0" encoding="UTF-8"?>
<database>
<select query="SELECT name, category FROM animal">
<row>
<name>xml_snäke</name>
<category>reptile</category>
</row>
<row>
<name>xml_frög</name>
<category>amphibian</category>
</row>
<row>
<name>xml_tüna</name>
<category>fish</category>
</row>
<row>
<name>xml_racoon</name>
<category>mammal</category>
</row>
</select>
</database>

Perl/XPath

use strict;
use DBI;
use XML::XPath;
use XML::XPath::XMLParser;

my $dir0 = "C:";

my $dbh = DBI->connect ("DBI:mysql:test01",
"root", "fire2013",
{ RaiseError => 1, PrintError => 0});
my $xp = XML::XPath->new (filename => "$dir0/animals.xml");
my $nodelist = $xp->find ("//row");
foreach my $row ($nodelist->get_nodelist ())
{
$dbh->do (
"INSERT INTO animal (name, category) VALUES (?,?)",
undef,
$row->find ("name")->string_value (),
$row->find ("category")->string_value ()
);
}
$dbh->disconnect ();

知道为什么我导入 xml 时没有得到变音符号吗?任何帮助表示赞赏。谢谢。
PS:Windows 7/MariaDB 5.5.31/Strawberry Perl 5.16

最佳答案

试试这个:

$dbh->do(qq{SET NAMES 'utf8'}) or die $dbh->errstr;

关于mysql - 使用 XPath 和编码导入 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27373799/

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