`
klxwcx
  • 浏览: 31394 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle大文件插入

    博客分类:
  • java
阅读更多
package com;

import java.sql.Blob;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.File;
import java.io.BufferedOutputStream;
import java.io.BufferedInputStream;
import java.sql.*;
import oracle.sql.BLOB;
import javax.swing.JFileChooser;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.filechooser.FileFilter;

public class ConnOracle

{
    public ConnOracle(){
        MyFrame win = new MyFrame();
        win.validate();
        //win.pack();
        win.setLocation(200,200);
        win.setVisible(true);
    }
    public static void main(String[] args) {
        new ConnOracle();
    }
}

class MyFrame extends JFrame{
    JPanel contentPane;
    JButton bt_choose = new JButton();
    JButton bt_exit = new JButton();
    int result;
    public MyFrame(){
        this.setSize(new Dimension(200,80));
        this.setTitle("WELCOME TO YOU");
        bt_choose.addActionListener(new MyActionListener(this));
        bt_choose.setText("选择文件");
        bt_exit.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                System.exit(0);
            }
        } );
        bt_exit.setText("退出");
        contentPane = (JPanel)this.getContentPane();
        contentPane.setLayout(new FlowLayout());
        contentPane.add(bt_choose);
        contentPane.add(bt_exit);
    }
    public void choose_file(){
       
        String pathname =null;
        String filename = null;
        JFileChooser filechooser = new JFileChooser();
        filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        JasperFileFilter jasperFileFilter = new JasperFileFilter("jasper");
        filechooser.setFileFilter(jasperFileFilter);
        result = filechooser.showOpenDialog(this);
       
        if(result==JFileChooser.CANCEL_OPTION){
            System.out.println("没选择文件!");
        }else{
           
            try{
                File openfile = filechooser.getSelectedFile();
                filename = openfile.getName();
                pathname = openfile.getPath();
               
                System.out.println("filename="+filename);
                System.out.println("pathname="+pathname);
                if(!(openfile.isFile())){
                    System.out.println("没有此文件!");
                    return ;
                }
                int index = filename.lastIndexOf('.');
                if (index > 0 && index < filename.length() - 1) {
                    String extension = filename.substring(index + 1).toLowerCase();
                    if (!(extension.equals("jasper"))){
                        System.out.println("您选择的文件不正确!");
                        return ;
                    }
                }
                filename = filename.substring(0,index);
                System.out.println("filename="+filename);
            }catch(Exception e){
                System.out.println("error="+e);
            }
           
            try{
                int report_id= 0;
                String report_name = filename;
                String flag = null;
               
                Class.forName("oracle.jdbc.driver.OracleDriver");
                Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.17:1521:gzscdb","klxuser","5583");
               
                Statement stmt = conn.createStatement();
                ResultSet rs = stmt.executeQuery("select * from reports where report_name='"+report_name+"'");
                if(rs.next()){
                    int i = JOptionPane.showConfirmDialog(this,"是否要更新!","window",JOptionPane.YES_NO_OPTION);
                    if(i == 1){
                        System.out.println("不更新!");
                        return ;
                    }
                    flag = "up";
                }else{
                    flag = "insert" ;
                }
                rs.close();
                stmt.close();
               
                Statement stmt_max = conn.createStatement();
                ResultSet rs_max = stmt_max.executeQuery("SELECT MAX(REPORT_ID) + 1 AS REPORT_ID FROM REPORTS");
                if(rs_max.next()){
                    report_id = rs_max.getInt("report_id");
                }
                if(report_id==0){
                    report_id = 1;
                }
                System.out.println("report_id="+report_id);
                rs_max.close();
                stmt_max.close();
               
                Statement stmt_end = conn.createStatement();
                if(flag.equals("insert")){
                    boolean defaultCommit = conn.getAutoCommit();
                    conn.setAutoCommit(false);
                    try{
                        System.out.println( "1");
                        stmt_end.executeUpdate("INSERT INTO REPORTS VALUES ('"+report_id+"', '"+report_name+"',EMPTY_BLOB())");
                        System.out.println( "2");
                        ResultSet rs_end = stmt_end.executeQuery("SELECT REPORT_DATA FROM REPORTS WHERE REPORT_ID='"+report_id+"' FOR UPDATE");
                        System.out.println( "3");
                        while (rs_end.next()) {
                            oracle.sql.BLOB blob = (oracle.sql.BLOB) rs_end.getBlob("REPORT_DATA");
                            File infile = new File(pathname );
                            BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
                            BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));
                            int c;
                            while ((c=in.read())!=-1) {
                                out.write(c);
                            }
                            in.close();
                            out.close();
                        }
                        conn.commit();
                    } catch (Exception ex) {
                        conn.rollback();
                        throw ex;
                    }
                    conn.setAutoCommit(defaultCommit);
                    System.out.println( "insert ok!");
                }else if(flag.equals("up")){
                    boolean defaultCommit = conn.getAutoCommit();
                    conn.setAutoCommit(false);
                    try {
                        stmt_end.executeUpdate("UPDATE REPORTS SET REPORT_DATA=EMPTY_BLOB() WHERE REPORT_NAME='"+report_name+"'");
                        ResultSet rs_end = stmt_end.executeQuery("SELECT REPORT_DATA FROM REPORTS WHERE REPORT_NAME='"+report_name+"' FOR UPDATE");
                        while (rs_end.next()) {
                            oracle.sql.BLOB blob = (oracle.sql.BLOB)rs_end.getBlob("REPORT_DATA");
                            File infile = new File(pathname );
                            BufferedOutputStream out = new BufferedOutputStream(blob.getBinaryOutputStream());
                            BufferedInputStream in = new BufferedInputStream(new FileInputStream(infile));
                            int c;
                            while ((c=in.read())!=-1) {
                                out.write(c);
                            }
                            in.close();
                            out.close();
                        }
                        conn.commit();
                    } catch (Exception ex) {
                        conn.rollback();
                        throw ex;
                    }
                    conn.setAutoCommit(defaultCommit);
                    System.out.println( "update ok!");
                }
                stmt_end.close();
                conn.close();
                System.out.println( "all ok");
            }catch (Exception e){
                System.out.println("error+"+e);
            }
        }
    }
    protected void processWindowEvent(WindowEvent e){
        if(e.getID()==WindowEvent.WINDOW_CLOSING){
            System.exit(0);
        }
    }
}

class MyActionListener implements ActionListener{
    MyFrame myframe;
    public MyActionListener(MyFrame frame){
        myframe = frame;
    }
    public void actionPerformed(ActionEvent e){
        myframe.choose_file();
    }
}

class JasperFileFilter extends FileFilter {
    String ext; // 文件扩展名
    JasperFileFilter(String ext) {
        this.ext = ext;
    }
   
    public boolean accept(File file) {
        if (file.isDirectory()) // 是目录,打开
            return true;
       
        String fileName = file.getName();
        int index = fileName.lastIndexOf('.');
        if (index > 0 && index < fileName.length() - 1) {
            String extension = fileName.substring(index + 1).toLowerCase();
            if (extension.equals(ext))
                return true;
        }
        return false;
    }
    public String getDescription() { // 返回描述文件的说明字符串
        if (ext.equals("jasper"))
            return "jasper File (*.jasper)";
        return "";
    }
}

分享到:
评论

相关推荐

    ORACLE数据库中插入大字段数据的解决方法

    在提供的文件`MysqlToOracle.java`中,可能包含了将MySQL数据转换并插入到ORACLE数据库的代码示例。这个过程可能涉及到数据类型转换、连接管理、事务控制以及上述的性能优化策略。在实际应用中,需要确保代码正确...

    深入分析oracle日志文件

    深入分析 Oracle 日志文件 Oracle 日志文件是 Oracle 数据库管理员 (DBA) 实现数据库恢复和追踪用户操作的重要工具。通过分析 Oracle 日志文件,可以追踪用户的恶意操作、恢复误删除的数据、执行事后审计等。Oracle...

    oracle插入大数据量

    这个文件是用oracle的脚本的如的,往oracle中插入的数据量可能会使用

    oracle向数据库里插入图片

    在Oracle数据库中插入图片涉及到BLOB(Binary Large Object)数据类型,这是Oracle用来存储大量二进制数据,如图片、音频或视频文件等的一种方式。本文将详细介绍如何在Oracle数据库中插入、查询和管理图片。 首先...

    oracle SQL 语句插入数据

    在Oracle中,插入数据到表中的主要语句是`INSERT INTO`,它允许你将新记录添加到已存在的表中。下面我们将深入探讨Oracle SQL语句插入数据的相关知识点。 一、基本语法 Oracle SQL 插入数据的基本语法如下: ```...

    oracle使用存储过程插入文件至数据库操作方法

    本文将详细介绍如何使用存储过程将文件插入到Oracle数据库中的具体步骤及注意事项。 #### 一、创建目录权限 为了能够进行文件操作,首先需要确保用户具有相应的目录权限。这里使用`SYSDBA`角色授予`IMAGE`用户创建...

    Java实现mybatis批量插入数据到Oracle

    2. 编写对应的Mapper XML文件,创建SQL语句,利用`&lt;foreach&gt;`标签处理批量插入: ```xml INSERT INTO user (id, name, age) (" separator="," close=")"&gt; VALUES ( #{item.id}, #{item.name}, #{item.age} )...

    Oracle插入大量数据

    根据给定文件的信息,“Oracle插入大量数据”的主题围绕着几种有效的策略展开,旨在提升Oracle数据库在大数据量场景下的性能表现。 ### 高速存储设备的应用 首先提及的是采用高速的存储设备来提升读写能力。EMC和...

    通过.bat文件连接oracle 插入数据库记录

    标题中的“通过.bat文件连接Oracle 插入数据库记录”指的是使用批处理(.bat)脚本来操作Oracle数据库,实现数据的插入功能。Oracle是全球知名的关系型数据库管理系统,而批处理脚本则是在Windows操作系统中运行的一...

    用java编程将txt文件数据导入oracle

    "Java编程将TXT文件数据导入Oracle数据库" Java 编程将 TXT 文件数据导入 Oracle 数据库是指使用 Java 语言编写程序将 TXT 文件中的数据导入 Oracle 数据库中,以方便进行计算、统计等操作。下面将详细介绍该知识...

    oracle oci 批量插入源代码

    3. **批量插入**:在Oracle OCI中,批量插入通常涉及使用oci_bind_array_by_name函数将一组数据绑定到同一个SQL插入语句中的多个占位符。这组数据可以是二维数组或其他合适的数据结构。执行oci_execute时,数据库一...

    Excel表的Oracle数据库插入工具

    此外,如果Excel文件非常大,还可以考虑先将数据导出为CSV文件,然后通过SQL*Loader等工具快速导入到Oracle数据库。 总之,将Excel数据插入Oracle数据库涉及的关键技术点包括:Excel文件的读取(如使用pandas)、...

    ORACLE配置文件优化

    在Oracle数据库管理中,配置文件优化是提升系统性能的关键步骤之一。主要涉及的文件有INIT.ORA、SPFILE和PFILE,它们都是控制数据库运行的重要参数文件。了解并正确配置这些文件,能有效提高数据库的运行效率,降低...

    jdbcoracle(文件上传)

    它支持多种数据类型,包括BFILE和BLOB,后者常用于存储大对象,如图片、文档或视频,这在文件上传场景中非常关键。 文件上传通常涉及以下几个步骤: 1. **用户界面**:首先,你需要创建一个用户界面,允许用户选择...

    ORACLE批量插入数据文件

    可实现批量插入记录,免去一条条复制语句之苦.

    java中xml文件的处理及oracle中xmltype的插入和读取.pdf

    Java 中 XML 文件的处理及 Oracle 中 XMLType 的插入和读取 Java 中 XML 文件的处理是指在 Java 应用程序中处理和操作 XML 文件的过程。在 Oracle 数据库中,XMLType 是一种特殊的数据类型,用于存储和处理 XML ...

    oracle blob转文件读取

    在软件开发过程中,尤其是在处理数据库中的二进制大对象(Binary Large Object, 简称BLOB)时,经常需要将数据库中的BLOB数据转换为文件进行读取或处理。本文将详细介绍如何使用C#语言结合Oracle数据库实现这一功能...

    mybatis的oracle的批量插入优化和mybatis的generator自动生成三层文件

    本文将详细探讨如何在Oracle数据库中进行批量插入优化,并介绍MyBatis Generator这一自动化代码生成工具,以提高开发效率。 首先,让我们深入理解Oracle数据库中的批量插入。批量插入可以显著提升性能,尤其是在...

    将EXCEL数据 插入ORACLE数据库

    2. **利用PL/SQL程序**:编写PL/SQL存储过程或者匿名块,通过Oracle的DBMS_LOB和UTL_FILE包读取Excel文件内容,逐行处理并插入到数据库中。这种方法灵活性高,可以处理复杂的转换逻辑,但需要一定的编程技能。 3. *...

    jdbc批量插入大字段

    在Oracle数据库中,Blob类型用于存储大量的二进制数据...总之,批量插入大字段是处理大量Blob数据的关键策略,通过JDBC提供的批处理功能,结合合理的事务管理和内存管理,可以显著提升Oracle数据库中的大数据插入效率。

Global site tag (gtag.js) - Google Analytics