MySQLでBLOBデータを処理する方法

MySQLでBLOBデータを処理する方法

具体的なコードは次のとおりです。

パッケージ epoint.mppdb_01.h3c;
java.io.File をインポートします。
java.io.FileInputStream をインポートします。
java.io.FileOutputStream をインポートします。
java.io.InputStream をインポートします。
java.io.OutputStream をインポートします。
java.net.URI をインポートします。
java.sql.Blob をインポートします。
java.sql.Connection をインポートします。
java.sql.DriverManager をインポートします。
java.sql.ResultSet をインポートします。
java.sql.Statement をインポートします。
org.apache.commons.net.ftp.FTPClient をインポートします。
org.apache.commons.net.ftp.FTPReply をインポートします。
org.apache.hadoop.conf.Configuration をインポートします。
org.apache.hadoop.fs.FSDataInputStream をインポートします。
org.apache.hadoop.fs.FileSystem をインポートします。
org.apache.hadoop.fs.Path をインポートします。
org.apache.hadoop.io.IOUtils をインポートします。
パブリッククラスMySQLblobToMPPphoto {
  //MySQL 接続 public static Connection getMySQLConnection() throws Exception {
    文字列 MySQLDRIVER = "com.mysql.jdbc.Driver";
    文字列 MySQLURL = "jdbc:mysql://192.168.186.13:3306/bigdata_scene03_rktj";
    文字列 MySQLUSERNAME = "root";
    文字列 MySQLPASSWORD = "Gepoint";
    接続 MySQLconn = DriverManager.getConnection(MySQLURL、MySQLUSERNAME、MySQLPASSWORD);
    MySQLconn を返します。
  }
  //MPP接続 public static Connection getMPPConnection() throws Exception {
    文字列 MPPDRIVER = "com.MPP.jdbc.Driver";
    文字列 MPPURL = "jdbc:MPP://192.168.186.14:5258/bigdata_scene03_rktj";
    文字列 MPPUSERNAME = "mpp";
    文字列 MPPPASSWORD = "h3c";
    接続 MPPconn = DriverManager.getConnection(MPPURL, MPPUSERNAME, MPPPASSWORD);
    MPPconn を返します。
  }
  //
  パブリック静的void getMySQLblobToHDFS()は例外をスローします{
    接続 conn = getMySQLConnection();
    結果セット rs = null;
    試す {
      文字列 sql = "ROW_ID、photo を t_rk_baseinfo_blob から制限 10 で選択します";
      ステートメント prest = conn.prepareStatement(sql);
      rs = prest.executeQuery(sql);
      (rs.next()) の間 {
        行IDを1にする
        ブロブ写真 = rs.getBlob(2);
        System.out.println(row_id + " " + 写真);
        入力ストリーム in = photo.getBinaryStream();
        出力ストリーム out = 新しい FileOutputStream("H:/photo/" + row_id + ".jpg");
        長さ = 0;
        byte[] buffer = 新しいbyte[1024];
        ((len = in.read(buffer)) != -1) の間 {
          out.write(バッファ、0、長さ);
        }
        アップロード("H:/photo/" + row_id + ".jpg");
      }
      プレストを閉じる();
      rs.close();
    } キャッチ (例外 e) {
      e.printStackTrace();
    ついに
      // 接続を閉じる if (conn != null) {
        試す {
          接続を閉じる();
          接続 = null;
        } キャッチ (例外 e) {
          e.printStackTrace();
        }
      }
    }
  }
  パブリック静的void main(String[] args)は例外をスローします{
    MySQL の Blob を HDFS に取得します。
  }
  //HDFS添付ファイルのアップロード public static void upload(String uploadpath) throws Exception {
    構成 conf = new Configuration();
    URI uri = 新しい URI("hdfs://192.168.186.14:8020");
    ファイルシステム fs = FileSystem.get(uri, conf, "HDFS");
    パス resP = new Path(uploadpath);
    パス destP = new Path("/photo");
    (!fs.exists(destP))の場合{
      fs.mkdirs(destP);
    }
    fs.copyFromLocalFile(resP, destP);
    fs.close();
    System.out.println("************************");
    System.out.println("アップロードに成功しました!");
  }
  //HDFS添付ファイルのダウンロード public static void download() throws Exception {
    構成 conf = new Configuration();
    文字列dest = "hdfs://192.168.186.14:/photo/11.png";
    文字列ローカル = "D://11.png";
    ファイルシステム fs = FileSystem.get(URI.create(dest), conf, "hdfs");
    FSDataInputStream fsdi = fs.open(新しいパス(dest));
    出力ストリーム output = new FileOutputStream(local);
    IOUtils.copyBytes(fsdi, 出力, 4096, true);
    System.out.println("************************");
    System.out.println("ダウンロードに成功しました!");
  }
}

要約する

上記は、私が紹介したMySQLでのBLOBデータ処理方法です。お役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • MySQL の TEXT フィールドと BLOB フィールドの違い
  • MSSQL との比較による MYSQL の学習 (IV) - BLOB データ型
  • Mysql longblob フィールドにデータを挿入する際の問題の解決方法
  • BLOB とは何か? MySQL BLOB サイズ設定の概要
  • Mysql LONGBLOB型はバイナリデータを格納します(変更+デバッグ+ソート)
  • Java は MySQL バイナリ ファイルの挿入、BLOB タイプ、発生した問題と解決策を実装します
  • PHPはPDOを使用してMySQLから大量のデータを読み取ります

<<:  Vuexの役割についての深い理解

>>:  Ubuntu での Subversion (SVN) の詳細なインストールと設定

推薦する

素晴らしい CSS ナビゲーション バーの下線効果

中国初のカッター github.com/chokcocoまず、ここに画像があります。純粋な CSS ...

zk+kafka+storm クラスターの docker-compose デプロイメントの実装

クラスターの展開の概要172.22.12.20 172.22.12.21 172.22.12.22 ...

CSS3はNESゲームコンソールのサンプルコードを実装します

成果を達成する実装コードhtml <input type="radio" ...

Vue で axios を使用して画像をアップロードするときに発生する問題

目次FormDataとは何ですか? vueとaxiosの協力による実践的な体験追加()セット()消去...

WeChatアプレットのスクロールビューの改行問題を解決する

今日、小さなプログラムを書いていたときに、スクロールビューを使用したのですが、スクロールビュー内のテ...

Vue3 ミックスインの使い方

目次1. mixin の使い方は? 2. ミックスイン使用時の注意2.1. ミックスイン オブジェク...

JavaScript の基本: ループと配列

目次ループ - for forループの基本的な使い方ループを終了するネストされたループ配列配列とは何...

mysql5.7.20 での最初のログイン失敗に対する簡単な解決策

まず、 (1)MySQL 5.7にはデフォルトのパスワードがあるデフォルトのパスワードを見つける g...

JSはマップを使用してdouble配列を統合します

目次序文データのシミュレーション結合されたデータ合併のアイデアコードの表示と分析最初のステップステッ...

jQuery ステップ進行軸プラグインの実装コード

毎日のjQueryプラグイン - ステップ進捗軸 ステップ進捗軸ツール系のサイトでは入門チュートリア...

Linux ハードウェア構成コマンドの例

ハードウェア ビュー コマンドシステム # uname -a # カーネル/オペレーティング システ...

MySQL ビューの原理と使用法の詳細な分析

序文: MySQL では、ビューはおそらく最も一般的に使用されるデータベース オブジェクトの 1 つ...

初心者向けウェブサイト構築チュートリアルの概要

これら 6 つの記事を書いた後、私は少し混乱し始めました。次にどこに書けばいいのか分かりません。ドメ...

Vuex のコアコンセプトと基本的な使用法の詳細な説明

目次導入始めるインストール①直接ダウンロードする方法②CND法③NPM方式④糸法NPMインストールの...