如何將大數據保存到 MySql 數據庫


1. 什么是大數據

1. 所謂大數據, 就是大的字節數據,或大的字符數據.
2. 標准 SQL 中提供了如下類型來保存大數據類型:
  • 字節數據類型: tinyblob(256B), blob(64K), mediumblob(16M), longblob(4G)
  • 字符數據類型: tinyclob(256B), clob(64K), mediumclob(16M), longclob(4G)
3. MySql 中處理字符的數據類型名稱與 SQL 標准不同:
  • 字符數據類型: tinytext(256B), text(64K), mediumtext(16M), longtext(4G)
// 示例: 把 mp3 保存到數據庫中
// 需要在 MySql 配置文件中添加如下配置: `max_allowed_packet=10485760`
// 因為 MySql 默認不允許數據包傳輸過大

    public class Demo{

        // 將 mp3 文件保存到數據庫中
        public void fun1(){

            // 獲取連接對象
            Connection con = JdbcUtils.getConnection();

            // 提供 sql 模板, 獲取 PreparedStatement 對象
            String sql = "INSERT INTO tab_bin VALUES(?,?,?)";
            PreparedStatement pstmt = con.prepareStatement(sql);

            // 設置 sql 模板參數
            pstmt.setInt(1,001);
            pstmt.setString(2,"hello.mp3");

            // mp3 保存為 blob 類型的數據
            // 通過 commons-io 工具類, 將 mp3 轉換成 byte[]
            Byte[] bytes = IOUtils.toByteArray(new FileInputStream("/Users/姓名/Desktop/hello.mp3"));

            // 使用 bytes, 創建 Blob 對象
            Blob blob = new SerialBlob(bytes);
            pstmt.setBlob(3,blob);

            // 發送 sql 語句
            pstmt.executeUpdate();
        }


        // 從數據庫中獲取 mp3 數據
        public void fun2(){
            // 獲取連接對象
            Connection con = JdbcUtils.getConnection();

            // 獲取 PreparedStatement 對象
            String sql = "SELECT * FROM tab_bin";
            PreparedStatement pstmt = con.prepareStatement(sql);

            // 發送 sql 語句, 返回 ResultSet 對象
            ResultSet rs = pstmt.executeQuery();

            // 將 rs 中名為 data 列的數據
            if(rs.next()){
                    Blob blob = rs.getBlob("data");

                    // 把 blob 轉換成硬盤上的 mp3 文件

                    // 1. 通過 blob 得到輸入流對象
                    // 2. 自己創建輸出流對象
                    // 3. 把輸入流的數據寫入到輸出流中
                    InputStream in = blob.getBinaryStream();
                    OutputStream out = new FileOutputStream("/Users/姓名/Document/world.mp3");

                    // 使用工具類中的方法
                    IOUtils.copy(in,out);
            }    
        }
    }

參考資料:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM