SQL导入 timestamp 数据时报错

在将timestamp数据导入SQL时遇到错误,主要是因为5.7版本后,NULL和'0000-00-00 00:00:00'被视为无效值。为了解决这个问题,可以参考提供的解决方案进行测试,或者考虑使用备选方案。
摘要由CSDN通过智能技术生成

SQL导入 timestamp 数据时报错:

原理分析:
1. 5.7开始不允许拿到NULL和拿到’0000-00-00 00:00:00’,都是视作空值处理的。

参考传门

==下面方法测试可以用==

1.在新增记录时能自动设置update_time字段为当前时间设置DEFAULT CURRENT_TIMESTAMP:
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP,

2.在更新记录时还能自动更新update_time字段为当前时间:
`update_time` timestamp NOT NULL ON UPDATE CURRENT_TIMESTAMP DEFAULT CURRENT_TIME
Spark SQL 是Apache Spark提供的SQL处理库,它允许用户通过SQL查询结构化数据。当你需要插入 timestamp 类型的数据到Spark DataFrame或者Table中,可以按照以下步骤操作: 1. 首先,创建一个timestamp对象,可以使用Java的 `java.sql.Timestamp` 或者 Spark SQL支持的特定日期间函数,如 `to_timestamp` 或 `from_unixtime` 来构造。 ```java import org.apache.spark.sql.types.TimestampType; import java.sql.Timestamp; // Java 8 中的间日期 API Timestamp timestamp = Timestamp.ofInstant(Instant.now(), ZoneId.systemDefault()); ``` 2. 将该timestamp对象转换成字符串,因为DataFrame列通常接受字符串输入。Spark SQL支持多种日期间格式,例如`YYYY-MM-DD HH:mm:ss.SSS`,你可以选择合适的格式。 ```java String formattedTimestamp = timestamp.toString(); ``` 3. 使用 `when` 和 `otherwise` 函数(如果使用Spark SQL DataFrame API),或者是 `lit` 函数(直接插入常量)将字符串插入到相应的列中: ```scala import org.apache.spark.sql.functions._ val df = Seq((formattedTimestamp, "some other data")).toDF("ts_column", "another_column"); df.createOrReplaceTempView("my_table"); // 如果是DataFrame,则转化为视图 // Scala 示例 val dfWithTimestamp = spark.sql( "INSERT INTO TABLE my_table SELECT ts_column, another_column WHEN col_name IS NULL ELSE (lit(ts_column))" ).select($"col_name".cast(TimestampType) as "ts_column", $"another_column") ``` 4. 如果是在Scala DataFrame上操作,确保对目标列进行了适当的类型转换,比如 `cast` 或 `as`。 注意:在实际应用中,你需要根据具体的表结构和个人需求调整上述代码,并确保数据库连接设置正确,以便于插入数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值