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) の詳細なインストールと設定

推薦する

シリアルポート使用時のvue-electronの問題解決

エラーは次のとおりです:キャッチされない TypeError: 未定義のプロパティ 'mod...

Mac OS に MySQL 5.7.20 をインストールするための詳細なグラフィックとテキストの説明

Mac OS X で TAR.GZ から MySQL 5.7 をインストールする MySQL 5.6...

MySQL 8.0 の新しいリレーショナル データベース機能の詳細な説明

序文MySQL 8.0 の最新バージョンは 8.0.4 rc であり、正式版は近日中にリリースされる...

MySQL で高性能なインデックスを作成するための完全な手順

目次1. インデックスの基本1. インデックスの種類1.1 Bツリーインデックス1.2 ハッシュイン...

Vueはログインタイプの切り替えを実装します

この記事では、ログインタイプの切り替えを実装するためのVueの具体的なコードを例として紹介します。具...

Dockerコンテナ終了エラーコードの手順

実行後、一部の Docker コンテナが終了することがあります。原因を調べるには、Docker コン...

Linux ソフトウェアのインストール場所を確認する簡単な方法

1. ソフトウェアのインストールパスを確認します。 Linuxソフトウェアをインストールできる場所は...

SQL文におけるGROUP BYとHAVINGの使用に関する簡単な説明

GROUP BY 句と HAVING 句を紹介する前に、まず SQL 言語の特殊な関数である集計関数...

ab ツールを使用してサーバー上で API ストレス テストを実行します。

目次1 システムスループットの簡単な紹介2 試験方法2.1 クライアントテストツール2.1.1 GE...

Ubuntu 18.04 に opencv 3.2.0 をインストールするためのソリューション

opencv.zip をダウンロード依存関係を事前にインストールします。まずダウンロードソースを更新...

MySQLクエリステートメント内のユーザー変数のコード分析

前回の記事では、MySQL 最適化の概要 - クエリの合計数を紹介しました。この記事では、クエリ ス...

Mysql 日付クエリの詳細な紹介

現在の日付を照会する CURRENT_DATE() を選択します。 CURDATE() を選択する;...

Linux nlコマンドの使い方

1. コマンドの紹介nl (行数) は指定されたファイルに行番号を追加し、標準出力に書き込みます。フ...

CSS の flex と inline-flex の違いの詳細な説明

inline-flex は inline-block と同じです。内部要素用の display:fl...

Linuxシステムでノードプロセスを実行しているが、プロセスを強制終了できない問題を解決します

まず、Linux システムで実行されているノード プロセスはプロセスを強制終了できないことを紹介しま...