Excel导入到oracle sql develop 出现 “无效的月份”

3 篇文章 0 订阅

  

       一些基础性的数据,需要手动导入,也就是从excel表中导入到oracle sql develop 的oracle中。出现了"无效的月份",也就是格式和数据库要的数据格式不一样。


       然后我就改呀改,按照数据库的样式将excel表中涉及到日期的格式都改了,但是还是报这个错误。在用sql语句在 oracle sql develop插入数据的时候,涉及到日期时间的格式,会进行一次to_date的转换,也就是在你导入的时候,会自动将你的excel中的格式用函数to_date转换成oracle想要的格式。就是这种格式: 21-9月-16


       当我手动的改成这种形式的时候,导入依然报错。问了问周围的同事,他们也给了我很多建议,转换了很多很多的格式。


        另一个项目组是用oracle进行开发的,虽然我都见过,但是没有说过话,他来之后,直接给我将原表的数据导出,然后对我说“标准格式,复制粘贴吧”


       为什么我就没有想到呢?导出来一份呢?


       由于我在excel表中更改的格式是文本或者是数字,日期等等的格式,导致格式不是oracle想要的。


       我们可以用sql语句查询一下oracle当前默认的日期显示格式:

        

         select value from nls_session_parameters where parameter='NLS_DATE_FORMAT';

         

       假如查询到的日期为DD-MON-RR,然后他会进行日期的转换,例如:to_date('2016/6/6','DD-MON-RR'),这样格式是不匹配的,所以就出现了无效的月份。


       在从excel导入oracle sql develop中,生成的sql语句中如下,在对日期操作没有进行转换的,于是报错。              

                    

        

      

       觉得 oracle sql develop 比PL SQL要好用,他整体上和sql server类似,大家可以尝试的用一下。

       

                                                                                     

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
Excel文件中的数据导入Oracle数据库可以使用以下步骤: 1. 首先,需要将Excel文件读取到C#中,可以使用NPOI库来读取Excel文件中的数据。 2. 连接Oracle数据库,并打开连接。 3. 创建一个OracleCommand对象,该对象用于执行SQL命令。 4. 遍历Excel文件中的每一行数据,并将数据插入到Oracle数据库中,可以使用OracleCommand对象的ExecuteNonQuery方法来执行SQL语句。 以下是一个示例代码: ```csharp using System; using System.Data; using System.Data.OracleClient; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.SS.Util; // 读取Excel文件 HSSFWorkbook workbook = new HSSFWorkbook(new FileStream("Excel文件路径", FileMode.Open)); ISheet sheet = workbook.GetSheetAt(0); // 连接Oracle数据库 string connectionString = "Data Source=数据库地址;User ID=用户名;Password=密码;"; OracleConnection connection = new OracleConnection(connectionString); connection.Open(); // 创建OracleCommand对象 OracleCommand command = new OracleCommand(); command.Connection = connection; // 遍历Excel文件中的每一行数据,将数据插入到Oracle数据库中 for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; i++) { IRow row = sheet.GetRow(i); if (row == null) continue; string col1 = row.GetCell(0).ToString().Trim(); string col2 = row.GetCell(1).ToString().Trim(); string col3 = row.GetCell(2).ToString().Trim(); string sql = "insert into table_name(col1, col2, col3) values(:col1, :col2, :col3)"; command.CommandText = sql; command.Parameters.Clear(); command.Parameters.Add(new OracleParameter(":col1", col1)); command.Parameters.Add(new OracleParameter(":col2", col2)); command.Parameters.Add(new OracleParameter(":col3", col3)); command.ExecuteNonQuery(); } // 关闭连接 connection.Close(); ``` 需要注意的是,在执行SQL语句,使用了参数化查询,可以防止SQL注入攻击。另外,需要根据Excel文件和Oracle数据库的实际情况,修改代码中的表名、列名和连接字符串等信息。
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值