gpt4 book ai didi

mysql - 将 XML 数据导入数据库

转载 作者:搜寻专家 更新时间:2023-10-30 23:04:29 26 4
gpt4 key购买 nike

作为一个体育迷,我希望获取美国职业棒球大联盟网站每天生成的 XML 文件,并将它们导入到 Access 或 MySQL 数据库中。我遇到的问题是,他们生成的几乎每个 XML 文件都与上一个文件略有不同。例如,一个游戏文件可能有一个名为 batter23 的字段,位于 event22 旁边,而另一个文件称为 batter24 并且位于 pitcher25。我知道 XML 文件可能不一致,但我知道必须有一种方法可以一致地将数据导入数据库。无论如何标准化这些 XML 文件?一些代码将解析列表中的每个文件,并将它们组织成特定的样式并为它们提供一致的字段名称?目前,我先将 XML 文件导入 Excel 工作表,然后将文件类型更改为 CSV,但字段名称和列位置仍然因文件而异。

我的目标是让所有文件都在一个结构中,这样我就可以每天将它们快速导入数据库,而无需手动更改列位置或字段名称。我对所有选择都持开放态度,但我在大多数语言方面的经验充其量只是菜鸟级别,所以请原谅我缺乏知识。

最佳答案

就 XML 而言,这些文件非常标准..,您只需要弄清楚每个文件代表什么。

我快速浏览了 9 月 14 日红袜队对皇家队的比赛。(Go Sox!)在 year_2014/month_09/day_14/gid_2014_09_14_bosmlb_kcamlb_1/players.xml我可以看到 Ortiz 的 ID 为 120074。

如果我在击球手中查找他的球员 ID,我可以看到他那场比赛的统计数据。(year_2014/month_09/day_14/gid_2014_09_14_bosmlb_kcamlb_1/batters/120074.xml)

继续。基本上,为了将这些文件加载​​到数据库中,您将对它们执行某种级别的处理以使其有意义。ID 似乎在游戏之间没有变化,但我只是粗略地看了一眼。

至于加载数据,perl 中的 XML::Simple 可以很容易地接受一个 XML 并吐出一个 perl 数据结构。除非您需要更重的东西,否则这应该可以满足您的需求。

加载 players.xml:

#!/bin/env perl
use strict; use warnings;

use Data::Dumper;
use XML::Simple;

my $players_xml = XMLin('players.xml');

print Dumper $xml;

给你类似的东西:

$VAR1 = {
'venue' => 'Kauffman Stadium',
'date' => 'September 14, 2014',
'team' => {
'Boston Red Sox' => {
'id' => 'BOS',
'player' => {
'605141' => {
'avg' => '.283',
'team_abbrev' => 'BOS',
'parent_team_id' => '111',
'hr' => '4',
'team_id' => '111',
'status' => 'A',
'last' => 'Betts',
'rl' => 'R',
'parent_team_abbrev' => 'BOS',
'first' => 'Mookie',
'rbi' => '12',
'game_position' => '2B',
'num' => '50',
'position' => '2B',
'current_position' => '2B',
'boxname' => 'Betts',
'bats' => 'R',
'bat_order' => '1'
},
...

然后根据需要导航这些哈希并插入数据库行就很简单了。

关于mysql - 将 XML 数据导入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28401517/

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