首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将目录中的所有文件解析为不做任何操作的数据库。

将目录中的所有文件解析为不做任何操作的数据库。
EN

Stack Overflow用户
提问于 2013-08-15 23:43:24
回答 1查看 371关注 0票数 0

我有一个预定的任务,它使用wget将xml更新从API下载到目录。

如果我在中手动运行它,它将正确地将MySQL文件解析到数据库:

代码语言:javascript
复制
LOAD XML LOCAL INFILE 'C:\\WGET\\GetGame.php@id=773'
REPLACE
INTO TABLE test.games (id, GameTitle, Platform, ReleaseDate, Developer, PlatformId);

我正在尝试自动化这个过程,因为目录将不断地接收要解析的新文件。我已经创建了一个.php脚本,它应该检查文件夹中的文件,并对文件夹中的任何内容运行SQL查询。(文件夹会在小时内自行清除。)

运行这个似乎没什么作用。我可以确认它正在登录到DB中,它似乎只是停留在mysql查询上。(PHP不是我的专长,所以问题可能是一个愚蠢的语法错误。)

代码语言:javascript
复制
<?php 
mysql_connect('localhost','root',''); 
mysql_select_db('test'); 
$files = glob('GetGame.*'); 
foreach($files as $file){ 
   mysql_query("LOAD XML LOCAL INFILE '".$file."' REPLACE INTO TABLE test.games (id, GameTitle, Platform, ReleaseDate, Developer, PlatformId);"); 
}
?> 

任何关于我做错了什么的线索都会受到极大的感谢。我在网上没有发现任何可靠的东西,并且尝试过许多变体。我将继续了解这一点,如果我碰巧遇到它,我自己会更新这篇文章。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-16 17:24:23

谢谢你的努力,但我找到了解决办法。我的第一个错误是假设$file在实际返回文件名时返回完整路径。我创建了第二个保存文件路径的变量,并将两个变量连接到一个新变量中,以便在mySQL查询中使用。可能不完美,但在我的情况下有效。

代码语言:javascript
复制
<?php 
mysql_connect('localhost','root','password') or die(mysql_error()); 
mysql_select_db('your_database'); 
$files = glob('filename.ext'); 
foreach($files as $file)
{ 
$path = 'C:\\\\directory\\\\directory\\\\';
$fullpath = $path . $file;
echo $fullpath;
mysql_query("LOAD XML LOCAL INFILE '".$fullpath."' REPLACE INTO TABLE database.table (columns, to, parse, into, database)") 
  or die("A MySQL error has occurred. Error: (" . mysql_errno() . ") " .mysql_error()); 

    }
  echo "Rows affected: " . mysql_affected_rows();
  mysql_close();
?>

我发布了完整的脚本,因为我还没有看到一个很好的简单解决方案。当谷歌搜索“解析文件夹xml到mysql”时,这篇文章是第二个结果,希望这能帮助一些人。

这将做什么:只要您将$path变量更改为用4个反斜杠而不是一个反斜杠保存XML文件的文件夹,它将以它接受的格式传递到mySQL的完整路径。脚本打印每个已处理的文件,并在运行后打印受影响的行数。如果存在mySQL错误,则打印错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18263710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档