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 完全な視差スクロール効果

1. 何ですか視差スクロールとは、複数の背景レイヤーを異なる速度で動かすことで、3次元のモーション...

NginxにLuaモジュールを追加する方法

luaをインストールする http://luajit.org/download/LuaJIT-2.0...

JSONObject の使用方法の詳細な説明

JSONObject は単なるデータ構造であり、JSON 形式のデータ構造 ( key-value構...

モバイル開発におけるHTML5開発の現状を深く理解する

「私たちは次の一連のモバイル製品を HTML5 で作成しています。」 「ええ、最近は多くの人が Ap...

Vue3はCSSの無限シームレススクロール効果を実装します

この記事では、CSS無限シームレススクロール効果を実現するためのvue3の具体的なコードを参考までに...

MySQL の結合テーブルにインデックスを作成する方法

この記事では、MySQL で 2 つのテーブルを関連付ける結合テーブルにインデックスを作成する方法を...

WMLとは何ですか?

WML (ワイヤレス マークアップ言語)。これは HTML から派生したマークアップ言語ですが、W...

JSはストップウォッチタイマーを実装します

この記事の例では、ストップウォッチタイマーを実装するためのJSの具体的なコードを参考までに共有してい...

Vue ベースの円形スクロールリスト機能を実装する

注: 親コンテナーに高さと :data='Array' および overfolw:h...

Linuxディレクトリ構造の詳細な紹介

Linuxを学び始めるときは、まずLinuxの標準ディレクトリ構造を理解する必要があります。 / r...

MySQL 8.0.15 winx64 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15のインストールと設定方法を参考までに紹介します。具体的な内容は...

Linux での UDP について学ぶ

目次1. UDPとLinuxの基礎の紹介2. 各機能の使い方1. ソケット機能の使用2. バインド機...

VMware 仮想マシン ブリッジ モードでインターネットにアクセスできない問題を解決する方法

ステップ1: ローカルイーサネットプロパティをチェックして、VMwareブリッジプロトコルがインスト...

CD コマンドを使わずに Linux でディレクトリ/フォルダに入る方法

ご存知のとおり、cd コマンドがないと、Linux でディレクトリを切り替えることはできません。それ...

MySQLデータのバックアップ方法の選択と考え方

目次1. rsync、cpでファイルをコピーする2. xxxをoutfile構文に選択する3. 遅延...