【发布时间】:2018-05-05 10:35:31
【问题描述】:
我对 MySQL 的命令 LOAD 加载文件做了一些研究。我找不到我的问题的答案。
是否可以使用 LOAD 子句从 .xml 文件加载数据到其他数据类型 列比 VARCHAR 还是 INT?
对于我的项目,我需要使用 double 或 float 数据类型,我发现的大多数示例仅使用 varchar 并为记录 ID 递增 int。
编辑:希望这次我能把事情说清楚。
我有类似这样的表记录:
___________________________________
| ID | IDPLACE | VALUE | DATETIME |
| int | int | float | datetime |
VALUE 可以是任何小数。
我有一个类似这样的 xml 文件。
<data>
<DateTime>12/3/2015 19:15:44</DateTime>
<place value="0.00000">1</place>
<place value="0.00000">10</place>
<place value="5.26316">11</place>
<place value="100.00000">12</place>
<place value="100.00000">13</place>
<place value="91.66667">14</place>
<place value="8.33333">15</place>
<place value="100.00000">16</place>
<place value="100.00000">17</place>
<place value="100.00000">18</place>
<place value="100.00000">19</place>
<place value="77.27273">2</place>
<place value="8.33333">20</place>
<place value="0.00000">3</place>
<place value="94.73684">4</place>
<place value="100.00000">5</place>
<place value="0.00000">6</place>
<place value="100.00000">7</place>
<place value="10.52632">8</place>
<place value="23.80952">9</place>
</data>
现在我正在使用 C# 脚本通过 INSERT 将这些数据逐行放入表中。从我想提供服务的脚本中。 但是我想到了使用 LOAD 命令创建一个过程来将这些数据插入到没有该服务的表中,仅由 MySQL 服务器处理。对于 DATETIME 列,我将使用 TIMESTAMP 或 DATETIME.NOW,因此它不会包含在 .xml 文件中。
这样的事情可能吗?
【问题讨论】:
-
是的,但我发现的所有主题都只提到了将 xml 文件加载到带有 varchar 列的表中的示例
-
不,我发送给您的链接显示了从 XML 文档加载行和字段的要求。如果您的 XML 与其中一种可用格式不匹配,那么您必须预处理 XML(使用 XSLT)以生成可以导入的 XML 文件。另一种方法是编写自己的代码(Java、Python、Perl)来解析 XML 并自己发出
insert语句。 -
我的问题是我需要将这些数字数据作为数字处理以进一步评估和数据挖掘,在预处理后使用 XSLT 可以吗??
-
你误会了。如果您发布要加载的 XML 输入示例以及要加载数据的表的定义,并描述 XML 值如何映射到表中的列,这将非常有帮助.
标签: mysql xml types command load