【问题标题】:Using mysql load for not varchar variable使用 mysql 加载非 varchar 变量
【发布时间】: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 Loading Documentation吗?
  • 是的,但我发现的所有主题都只提到了将 xml 文件加载到带有 varchar 列的表中的示例
  • 不,我发送给您的链接显示了从 XML 文档加载行和字段的要求。如果您的 XML 与其中一种可用格式不匹配,那么您必须预处理 XML(使用 XSLT)以生成可以导入的 XML 文件。另一种方法是编写自己的代码(Java、Python、Perl)来解析 XML 并自己发出 insert 语句。
  • 我的问题是我需要将这些数字数据作为数字处理以进一步评估和数据挖掘,在预处理后使用 XSLT 可以吗??
  • 你误会了。如果您发布要加载的 XML 输入示例以及要加载数据的表的定义,并描述 XML 值如何映射到表中的列,这将非常有帮助.

标签: mysql xml types command load


【解决方案1】:

我没有完全理解你的问题。如果您问是否可以在不使用列数据类型 VARCHAR 的情况下将 .xml 中的值插入 MySql 数据表中,我的答案是:

对于浮点数或双精度数,您可以使用以下数据类型:

FLOAT(M, D) DOUBLE(M,D) 十进制(M, D) 详细说明:可以定义显示长度(M)和小数位数(D)

您也可以在插入之前或之后在 select 语句中使用解析,例如:

myparsedDecimal = CAST(decimalBeforeParse AS DECIMAL(10, 6))

【讨论】:

  • 不,我不会问这个。我为我的误会道歉。我想知道是否可以通过 sql 命令加载将 xml 文件加载到表中(具有十进制数字数据类型)。我在任何地方都找不到任何示例。
猜你喜欢
  • 1970-01-01
  • 2021-04-01
  • 2022-06-29
  • 2023-03-07
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多