将CSV文件以NULL日期导入到MySQL中

马修·科利(Matthew Colley)

我正在使用MULE将CSV文件导入Mysql数据库。但是,导入CSV时,如果在MySQL中有一个空字段映射到日期字段,则导入失败。

这是Mysql字段:

Description     RecDate
---------------------------
Varchar(50)     Date

这是CSV文件:

 your basic description,,
 another description,,
 yet another description,,

这是M子配置

 <?xml version="1.0" encoding="UTF-8"?>
 <mule xmlns:jdbc-ee="http://www.mulesoft.org/schema/mule/ee/jdbc"     xmlns:file="http://www.mulesoft.org/schema/mule/file"  xmlns:tracking="http://www.mulesoft.org/schema/mule/ee/tracking" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans" version="EE-3.6.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans        
http://www.springframework.org/schema/beans/spring-beans-current.xsd http://www.mulesoft.org/schema/mule/corejttp://www.mulesoft.org/schema/mule/core/current/mule.xsdjttp://www.mulesoft.org/schema/mule/filejttp://www.mulesoft.org/schema/mule/file/current/mule-file.xsdjttp://www.mulesoft.org/schema/mule/ee/trackingjttp://www.mulesoft.org/schema/mule/ee/tracking/current/mule-tracking-ee.xsdjttp://www.mulesoft.org/schema/mule/ee/jdbc jttp://www.mulesoft.org/schema/mule/ee/jdbc/current/mule-jdbc-ee.xsd">

<configuration doc:name="Configuration">
<expression-language autoResolveVariables="true">
<import class="org.mule.util.StringUtils" />
</expression-language>
</configuration>
<jdbc-ee:mysql-data-source name="MySQL_Data_Source" user="XXX" password="XXX" url="jdbc:mysql://127.0.0.1:3306/XXX" transactionIsolation="UNSPECIFIED" doc:name="MySQL Data Source"/>
<jdbc-ee:connector name="Database" dataSource-ref="MySQL_Data_Source" validateConnections="true" queryTimeout="-1" pollingFrequency="0" doc:name="Database"/>
<flow name="csvFlow1" >
<file:inbound-endpoint path="C:\Users\XXX\Desktop\Mule_Testing" pollingFrequency="5000" doc:name="Source" responseTimeout="10000" tracking:enable-default-events="true"/>
<file:filename-wildcard-filter caseSensitive="false" pattern="CRM_UPDATES.csv"/>
<object-to-string-transformer doc:name="Object to String"/>
<splitter expression="#[StringUtils.split(message.payload, '\n\r')]" doc:name="Splitter"/>
<expression-transformer expression="#[StringUtils.split(message.payload, ',')]" doc:name="Expression"/>
<logger level="DEBUG" doc:name="Logger" message="Payload is: #[message.payload]"/>
<jdbc-ee:outbound-endpoint exchange-pattern="one-way" queryKey="InsertRecord" queryTimeout="-1" connector-ref="Database" doc:name="MyDB">
        <jdbc-ee:query key="InsertRecord" value="INSERT INTO `XXX` (`Description`,`RecDate`) VALUES (#[message.payload[0]],#[message.payload[1]])"/>

</jdbc-ee:outbound-endpoint>
</flow>
</mule>  

每当我将CSV文件更改为以下文件时:

  your basic description,0000-00-00,
  another description,0000-00-00,
  yet another description,0000-00-00,

导入将起作用。如果我将CSV日期字段更改为NULL,则导入将失败:

   your basic description,NULL,
   another description,NULL,
   yet another description,NULL,
戴维·多索特(David Dossot)

问题来自:

StringUtils.split(message.payload, ',')

这将产生一个字符串数组。

如果CSV是:

your basic description,,

它将使用一个空字符串作为date字段的值,我认为这还不行。

如果CSV是:

your basic description,NULL,

它将使用其中包含的字符串"NULL",这也不是有效的日期。

我建议您将其应用于StringUtils.trimToNull拆分数组的每个元素,以获取null日期字段的实际值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

CSV文件中的报价以导入到MySQL中

将压缩的csv文件导入到Talend中

如何将csv文件导入到mysql表中并自动递增

使用PHP将csv文件导入到mySQL中的问题

从 CSV 导入到文件

将多个csv文件导入到pandas中并串联到一个DataFrame中

需要将csv文件合并为一个文件,然后将csv文件导入到mysql中的表中

如何解析文件名,并使用shellscript将数据导入到csv文件中?

如何使用node.js将csv文件导入到mysql?

不使用主键将CSV文件导入到Mysql表

从Windows中的.csv文件将数据导入到mongodb数据库中

将 CSV 文件中的每一列导入到单独的组合框中

使用sql将数据从文件csv导入到Oracle

d3将csv文件导入到数组

将CSV文件从GCS导入到BigQuery

将数据从CSV文件导入到InfluxDB

将数据从 csv 文件导入到 R

Powershell Azure-将CSV文件导入到appsettings中

将数据从csv文件导入到postgres表中,而无需先创建表

如何通过Java代码将CSV文件数据导入到PostgreSQL表中?

如何将导入到python中的数据从csv文件转换为时间序列?

KDB-似乎无法将csv文件导入到表中

使用PYSPARK将CSV文件加载/导入到mongodb中

使用R将多个csv文件导入到postgresql数据库中(内存错误)

当我使用`sequel`将数据从csv文件导入到postgresql中时出现错误

将CSV文件导入到Ubuntu 16.04上安装的R Studio中

CSV文件将不会导入到mysql数据库中

C#将.CSV数据导入到MySQL表中仅复制1列

将MySQL转储文件导入到SQLite