繁体   English   中英

加载数据本地文件

[英]LOAD DATA LOCAL INFILE

我有一个XML文件,我想将数据从该XML文件插入数据库

如果尝试使用以下代码,但未在datatase中存储数据

$sql = "LOAD DATA INFILE 'corporatenews/$zname' INTO TABLE `corporatenews` FIELDS TERMINATED BY '|' LINES STARTING BY '<row>' TERMINATED BY '</row>' (`ByLine`,`StoryId`,`PublishDate`,`Author`,`Category`,`SubCategory`,`TitleLine`,`SubTitleLine`,`StoryMain`,`Flag`)";

$ zname是存储xml文件名的变量

我试图通过mysql_error捕获错误,但未显示任何内容

您似乎试图通过将文件直接推入MySQL来使事情复杂化。 对于一个简单的解决方案,您可以将整个XML文件读入w / file_get_contents内存,然后将其从PHP插入MySQL。

编辑:根据OP要求进行澄清。

好的,有很多方法可以解析PHP中的XML文件,而IMO最简单的方法就是SimpleXML 基本上,您想读取文件,然后对其进行迭代以创建一堆INSERT语句。 批处理insert语句可能会更快,但是暂时不要理会。

该代码将是这样的(此代码假定MySQL连接已正确设置):

// iterate over XML elements
$oXml = new SimpleXMLElement('path/to/file.xml', 0, true);
foreach($oXml as $oElement) {
  // build main part of query
  $sSql = 'INSERT INTO (`ByLine`,`StoryId`,`PublishDate`,`Author`,`Category`,`SubCategory`,`TitleLine`,`SubTitleLine`,`StoryMain`,`Flag`) VALUES (';

  $sSql .= $oXml['ByLine'] . ',';
  $sSql .= $oXml['StoryId'] . ',';

 // ..

}

基本上,您使用SimpleXML从XML属性/子节点中提取数据,然后构建一个可以传递给mysql_query的字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM