0

我有一个如下所示的 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<article lang="">
  <para/>
  <para/>
  <informaltable frame="all">
    <tgroup cols="2.4"><tbody><row><entry namest="c1" nameend="c3"><para>Informe No. 08- 1696 </para></entry><entry namest="c4" nameend="c5"><para>Pagina 1 de 1</para></entry></row><row><entry namest="c1" nameend="c3"><para>Apellidos:   COLINA</para></entry><entry namest="c4" nameend="c5"><para>Nombres:   GELA</para></entry></row><row><entry><para>Edad: 50a</para></entry><entry><para>Sexo:  F</para></entry><entry><para>Historia No.: </para></entry><entry><para>Entrada: 15-01-2008</para></entry><entry><para>Salida: 17-01-2008</para></entry></row><row><entry namest="c1" nameend="c3"><para>Remitente:    Dr. Mano Paz</para></entry><entry namest="c4" nameend="c5"><para>Institución: Torre Sur</para></entry></row><row><entry namest="c1" nameend="c5"><para>Origen y Naturaleza del Material:    Orina (muestra A, B y C )</para></entry></row></tbody></tgroup>
  </informaltable>
  <para/>
  <para/>
  <para/>
  <para>INFORME CITOLOGICO</para>
  <para/>
  <para>A.- MACROSCOPICO:   Se recibe envase conteniendo 15 cc de orina, el cual se centrifuga, se extiende en láminas portaobjetos y se colorea para evaluación microscópica.</para>
  <para/>
  <para>        RESULTADO:  FROTIS CITOLOGICO NEGATIVO.        </para>
  <para/>
  <para>B.- MACROSCOPICO:   Se recibe envase conteniendo 14 cc de orina, el cual se centrifuga, se extiende en láminas portaobjetos y se colorea para evaluación microscópica.</para>
  <para/>
  <para>        RESULTADO:  FROTIS CITOLOGICO NEGATIVO.        </para>
  <para/>
  <para>C.- MACROSCOPICO:   Se recibe envase conteniendo 13 cc de orina, el cual se centrifuga, se extiende en láminas portaobjetos y se colorea para evaluación microscópica.</para>
  <para/>
  <para>        RESULTADO:  FROTIS CITOLOGICO NEGATIVO.        </para>
  <para/>
  <para/>
  <para/>
  <para>                                                </para>
  <para/>
</article>

我需要<para>使用MYSQL LOADor导入其中包含信息的标签,并将MYSQL XML每个标签的内容<para>放在一列中,这样对于我导入的每个 XML 文件,我都会得到 1 行。最终结果将如下所示:

Column1 - - - Column2 - - - Column3 - - - Column4

1st Para - - -2nd Para - -  3rd Para - -  4th Para

等等所有<para>标签。现在,如果我尝试导入此文件,则默认行为是每个<para>内容将成一行而不是一列,例如为同一文件创建 20 行(一行中的每个信息),而不是导入同一行上的每个字段但在不同的列上。我如何设置它,以便它们进入每一列而不是行。

这是它现在的样子:

在此处输入图像描述

我想要的是每个文件都在一个列中,而不是如图所示的一行。知道这将对大约 50.000+ 个文件执行,因此每个 XML 文件应该是一行,并且它的字段是一列,而不是该 XML 的每个字段都变成一行。基本上,所有字段都应该放在一列中,并且只占用一行,这样 1 行 = 1 个 XML 文件。

4

1 回答 1

1

您说您已经<para>连续拥有了每个文件,因此,在将每个文件加载到para1列中后,您可以尝试:

SELECT CONCAT(
  'SELECT ', GROUP_CONCAT('"',MID(REPLACE(para1, '.', ''),INSTR(REPLACE(para1, '.', ''),':')+1),'"' ' AS `', LEFT(REPLACE(para1, '.', ''),INSTR(REPLACE(para1, '.', ''),':')-1),'`' SEPARATOR ','), 
  ' FROM `para` LIMIT 0,1')
INTO @qry
FROM `para`;

PREPARE stmt FROM @qry;
EXECUTE stmt;

在 SQLFIDDLE 中尝试

输出:

EDAD  |  SEXO  |  HISTORIA NO  |  ENTRADA  |  SALIDA  |  REMITENTE  |  INSTITUCION  | ORIGEN Y NATURALEZA DEL MATERIAL |

  50a |      F |               |15-01-2008 |17-01-2008|             |               |        Orina (muestra A, B y C)  |
于 2013-07-04T16:39:22.507 回答