You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过SQL导入向导导入Excel并填充目标表当前日期列?

如何用SQL导入向导导入Excel并自动填充datetime列为当前日期

针对你的需求——清空目标表、导入Excel的Col1-Col4到已有SQL表、为第5个datetime列填充当前日期,这里有两种靠谱的实现方式,操作起来都很简单:

方法一:给datetime列设置默认值(一劳永逸)

这种方法适合后续还要多次导入的场景,设置一次默认约束后,每次导入都自动填充日期:

  1. 添加默认值约束
    先给你的目标表的datetime列(假设它叫RecordCreateTime,记得替换成你实际的列名)加上默认值,执行这段SQL:

    ALTER TABLE YourTargetTableName
    ADD CONSTRAINT DF_RecordCreateTime DEFAULT GETDATE() FOR RecordCreateTime;
    

    如果需要UTC时间,把GETDATE()换成GETUTCDATE()就行,它会取服务器的UTC日期时间。

  2. 清空目标表
    用高效的TRUNCATE清空表(如果表有外键约束,就用DELETE FROM YourTargetTableName;):

    TRUNCATE TABLE YourTargetTableName;
    
  3. 运行SQL导入向导
    打开SQL Server导入导出向导,跟着步骤走:

    • 数据源选Microsoft Excel,选中你的Excel文件,注意匹配Excel版本(比如.xlsx选对应选项)
    • 目标选择你的SQL数据库和目标表
    • 列映射步骤时,确认Excel的Col1-Col4和目标表的对应列匹配正确,datetime列不用管——因为有默认值,导入时会自动把当前时间填进去
    • 完成导入,所有新行的datetime列都会自动填充导入时刻的服务器时间

方法二:导入后批量更新(无需修改表结构)

如果你不想改动表的结构,就用这种先导入再更新的方式:

  1. 清空目标表
    同样执行清空语句:

    TRUNCATE TABLE YourTargetTableName;
    
  2. 导入Excel数据
    走导入向导流程,到列映射步骤时,把目标表的datetime列设置为忽略(因为Excel里没有这一列),导入后这一列会是NULL值。

  3. 批量填充当前日期
    导入完成后,执行更新语句,把所有行的datetime列设为当前时间:

    UPDATE YourTargetTableName
    SET RecordCreateTime = GETDATE();
    

小提示

  • TRUNCATE会重置自增列的种子值,DELETE不会,根据你的表结构选择清空方式。
  • 导入前确认Excel的列数据类型和目标表对应列一致,避免出现类型转换错误。
  • 如果映射时提示列不匹配,手动调整对应关系即可。

内容的提问来源于stack exchange,提问作者jujulalu

火山引擎 最新活动