首页 > 解决方案 > 将 CSV 导入 SQL - 使用日期时间/时间戳

问题描述

我目前正在将 CSV(包含数千行)导入 SQL。到目前为止,我已经在 SQL 中创建了一个表并用列名填充它,以及与列名对应的数据类型(所有这些都对应于 csv 中的列)

在此 csv 文件中,其中一列以以下形式给出时间戳:2/3/2019 12:00:00 AM (MM/DD/YY HH:MM:SS) 我在 sql 中创建的相应列有一个 datatyoe如果时间戳(6)

我的下一步是右键单击我刚刚在 SQL 中创建的表并点击“导入数据”,然后执行将 csv 导入到 sql 的步骤,但是,时间戳没有正确导入。我知道这一点是因为 csv 中的所有时间戳都来自 2019 年 2 月 3 日,而在 SQL 中,它的范围从 20-MAR-02 7:00:05 PM(DD-MON-YY HH:MM:SS) 到 20- APR-02 7:00:00 PM(DD-MON-YY HH:MM:SS)

我不知道如何让格式从 csv(MM/DD/YY HH:MM:SS) 匹配到 SQL(DD-MON-YY HH:MM:SS)

任何帮助表示赞赏!谢谢!!

编辑:@Sean Lange:谢谢!当我尝试使用 datetime(6) 作为数据类型时,我收到一条错误消息,指出 00907:missing right parenthesis? 如果我只尝试日期时间,我会收到错误 00902:无效数据类型?有什么想法吗?

编辑#2:是的,我正在使用 oracle,抱歉,这些网站上的语言有时让我感到困惑,因为我还在学习。任何帮助仍然会很棒,具体一步一步进行

编辑#3:感谢您的帮助。再次抱歉我缺乏知识,我正在使用 oracle sql developer。错误地创建表格后,我输入了以下代码行:

更改表 table_name

更改列 column_name to_timestamp(yourFieldName, 'mm/dd/yyyy hh:mi:ss am');

但是,我收到了这个错误。

错误报告 - ORA-01735: 无效的 ALTER TABLE 选项 01735。00000 - “无效的 ALTER TABLE 选项”

我真的很感谢你们的帮助,再次感谢你们!

我还尝试在向导中更新 for enter image description here mat,但出现错误。附件是解释我做了什么的截图

在此处输入图像描述

我不认为图片工作,但错误说日期格式未被识别。

标签: oracledatedatetimeimporttimestamp

解决方案


您尚未指定用于连接 Oracle 数据库的客户端- TOAD?甲骨文 SQL 开发者?还有什么?...所以我不能给你具体的分步说明。

但是,您的基本问题是您需要将文本字符串转换为时间戳,为此您需要输入日期格式字符串。您的“导入数据”向导应该有一个步骤,用于 (a) 输入表达式或 (b) 输入日期格式。

您想要的日期格式字符串是'mm/dd/yyyy hh:mi:ss am'(不区分大小写,如果您愿意,可以使用大写字母,或者使用 pm 代替 am)。

表达式是

to_timestamp(yourFieldName, 'mm/dd/yyyy hh:mi:ss am')

推荐阅读