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

推薦する

MySQL データベース テーブルとデータベース パーティショニング戦略

まず、テーブルを分割する必要がある理由について説明します。データシートが数百万に達すると、1 回のク...

Linux で Oracle データベースをバックアップするためのスケジュールされたタスクの設定に関するチュートリアル

1. データベースの文字セットを確認するデータベースの文字セットは、Linux で設定された環境変数...

忘れられたボタンタグ

注:この記事は他の人によって翻訳されていますが、考えるべき点が多く、理解しにくい点もあると感じていま...

HTMLはマウスをホバーしたときにテキストを表示するためにtitle属性を使用します。

コードをコピーコードは次のとおりです。 <a href=# title="ここに表示...

ウェブサイトのアクセス速度を向上させるための徹底的な最適化に関するヒント

<br />ウェブサイトのアクセス速度はウェブサイトのトラフィックに直接影響を及ぼし、ウ...

uniapp アプレットでウォーターフォール フロー レイアウトを実装するためのアイデアとコード

1. はじめに今、ウォーターフォールフローについて書くことは、古い内容の焼き直しと見なされますか?気...

HTML ページジャンプのパラメータ渡しの問題

効果は以下のとおりです。ページジャンプボタンをクリックした後 対応する値はページ b で取得できます...

企業サイトとコラム辞典 中国語と英語の比較 中国語と英語のバイリンガル企業サイトを作る仲間は

名前キャラクター名前キャラクター情報ニューステクノロジー技術スキンケアスキンケア補う補う香水香水化粧...

JavaScript でよく使われる 3 つの Web エフェクトの詳細な説明

目次1要素オフセットシリーズ1.1 オフセットの概要1.2 オフセットとスタイルの違い視覚領域クライ...

HTML チュートリアル: HTML 水平線分

<br />このタグを使用すると、画面上に水平線を表示して、ページのさまざまな部分を区切...

1 つの記事で v-model とその修飾子を学ぶ

目次序文v-model の修飾子:怠け者トリム番号さまざまな入力タイプやその他の要素での v-mod...

MySQL の同時実行性の問題と解決策の分析

目次1. 背景2. テーブルロックによるクエリの遅延3. オンラインでテーブル構造を変更するとどのよ...

JavaScript でフォロー広告を実装するためのサンプルコード

フローティング広告は、ウェブサイト上で非常に一般的な広告形式です。フローティング広告は、ユーザーの閲...

MySQLデータベースのSYNフラッディング問題を解決する

Syn 攻撃は、最も一般的で最も簡単に悪用される攻撃方法です。TCP プロトコルの欠陥を利用して、偽...