PHP - 从多个 MySQL 查询创建 XML 并按日期排序

标签 php mysql xml sorting

我的 MySQL 数据库中有 10-20 个日志表。每个表包含 50-100.000 行。我需要将它们导出到 XML 并按创建日期对它们进行排序。

联合是一个不错的选择,因为表不包含相同的列(一个表可能包含 3 列,另外 30 列)。

这就是我创建 XML 的方式:

// Events
$stmt = $db->query("
  SELECT id, columnX, created
  FROM table1
");
$row_count = $stmt->rowCount();
if ($row_count != '0') {
  while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $event = $xml->createElement("event");
    $events->appendChild($event);
    $event->appendChild($xml->createElement("ID", "XXXX"));
    $event->appendChild($xml->createElement("columnX", $row['columnX']));
    $event->appendChild($xml->createElement("created", $row['created']));
  }
}

// Other events
$stmt = $db->query("
  SELECT id, columnY1, columnY2, columnY3, created
  FROM table2
");
$row_count = $stmt->rowCount();
if ($row_count != '0') {
  while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $event = $xml->createElement("event");
    $events->appendChild($event);
    $event->appendChild($xml->createElement("ID", "XXXX"));
    $event->appendChild($xml->createElement("columnY1", $row['columnY1']));
    $event->appendChild($xml->createElement("columnY2", $row['columnY2']));
    $event->appendChild($xml->createElement("columnY3", $row['columnY3']));
    $event->appendChild($xml->createElement("created", $row['created']));
  }
}

有人知道如何解决这个问题吗?

最佳答案

我建议使用 INSERT INTO ... SELECT ... UNION ... SELECT 构造将所有数据提取到(临时)表中。 INSERT INTO ... SELECT 允许您直接将选择结果插入到表中。 UNION 允许您连接 SELECT 结果。因为它是一个数据库语句,所以一切都发生在 DBMS 中。

之后,使用 select 获取按日期字段排序的数据,并使用 XMLWriter 创建 XML。

关于PHP - 从多个 MySQL 查询创建 XML 并按日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42794942/

相关文章:

mysql - 最近发布帖子的用户返回结果的速度比旧帖子的用户要快得多

python - 您可以使用哪些 Python 可访问工具从 XML 文档生成 XSD?

c# - 带有 XML 文件的 Entity Framework

java - Drool 引擎文件没有被执行

php - Joomla 3.2 - 查看 $this->get ('Form' ) 返回 false,然后返回表单

java - 如何在部署在 tomcat 上的 JBPM 6.2 中设置应用程序角色

php - 在 Windows 上安装 phpsh

java - Jboss 与 MySQL 数据库的连接

php - Laravel, Controller 中的 Auth::user()

php - 为什么 "\"在将它存储在 PHP 的字符串中时出错?