No.3ベストアンサー
- 回答日時:
SELECTした結果をリダイレクトすると、桁揃えされてるので、
BLOBに限らずVARCHARもフル桁出力されちゃうと思います。
#1に書いたように、INTO DUMPFILEで1レコードずつ出力しましょう。
参考URL:http://dev.mysql.com/doc/refman/5.1/ja/select.ht …
No.2
- 回答日時:
import java.io.*;
import java.sql.*;
public class sqlblob1{
public static void main( String args[] ){
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/test?user=xxx&password=xxx";
Connection conn = DriverManager.getConnection(url);
File file = new File("c:\\Users\\nakagawa_takashi\\A-2.pdf");
FileInputStream fis = new FileInputStream(file);
PreparedStatement ps = conn.prepareStatement("INSERT INTO images VALUES (?, ?)");
ps.setString(1, file.getName());
ps.setBinaryStream(2, (InputStream)fis, file.length());
ps.executeUpdate();
fis.close();
ps.close();
conn.close();
}catch( Exception e ){
System.out.println("Exception");
if (e instanceof SQLException) {
System.out.println("エラー・コード: " +
((SQLException)e).getErrorCode());
}
}
}
}
============================================
import java.io.*;
import java.sql.*;
public class sqlblob2{
public static void main( String args[] ){
try{
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost/test?user=xxx&password=xxx";
Connection conn = DriverManager.getConnection(url);
try{
File file = new File("B-2.pdf");
if ( ! file.exists() ){
file.createNewFile();
}
PreparedStatement ps = conn.prepareStatement("SELECT img FROM images WHERE imgname = ?");
ps.setString(1, "A-2.pdf");
ResultSet rs = ps.executeQuery();
rs.next();
System.out.println("result set next successfull");
byte[] imgBytes = rs.getBytes(1);
System.out.println("getbytes successfull");
//バイト配列ストリーム作成
ByteArrayOutputStream baos=new ByteArrayOutputStream();
//ファイルストリーム作成
FileOutputStream fos=new FileOutputStream(file);
System.out.println("初期のバッファサイズ="+baos.size());
baos.write(imgBytes);//ストリームに書き込み
baos.writeTo(fos);//ファイルに書き込み
fos.close();//ファイルを閉じる
baos.reset();//ストリームを消去
System.out.println("リセット後バッファサイズ="+baos.size());
baos.close();//ストリームを閉じる
}catch( Exception e ){
System.out.println("Exception");
if (e instanceof SQLException) {
System.out.println("エラー・コード: " +
((SQLException)e).getErrorCode());
}
}
}catch(Exception e){
System.out.println("connection error");
System.exit(1);
}
}
}
でやって見ましたが再現しませんでした。
No.1
- 回答日時:
何をつかって、どう、PDFファイルを保存していますか?
たとえば、コンソールから、
SELECT BLOBのカラム名 FROM テーブル名 WHERE 一意のキー項目=キー値 INTO DUMPFILE "ファイル名"
とやっているとか
それとも、JavaとかPHPで保存する為のプログラムを自分で作ったのか。
プログラムを作ったのであれば、抽出しているところと、保存している部分の
コードを提示してもらわないとアドバイスできません。
あるいは、何かDBを操作するツールを使っているとか?
その場合、ツール名は何でしょうか?
この回答への補足
まず、保存ですが、これはjavaで作られたプログラムでpdfファイルを利用者がアップロードしてデータベースに登録しています。
今回は、その登録されているpdfファイルをシェルに直接SQLを書いて取り出そうとしています。なので、取り出す方法は、
select pdffile from a-table
としています。
pdffile カラムがblobカラムになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PDF エクセルのVBAでファイルをpdfで保存するとソフトによっては開けなくなる 3 2022/06/08 10:20
- Excel(エクセル) 【VBA】PDF出力に任意のファイル名前を付ける方法 3 2023/07/21 10:55
- Excel(エクセル) エクセルVBA、間違っているコード内容を正して頂けませんか? エクセルワークシートに納品書を作ったの 2 2023/08/02 21:13
- PDF 保存したPDFファイルが開けなくなり、困っています 1 2022/09/15 21:08
- Excel(エクセル) 【マクロ】ファイル名の日付によって、保管するフォルダを、自動選択したい 4 2023/08/16 11:24
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- PDF PDFに精通した方に質問。JPEGファイル群を一つのPDFファイルにするときの容量変化について 6 2023/07/23 19:06
- Dropbox スマホのドロップボックスにあるpdfファイルの起動 2 2022/06/18 09:09
- PDF PDF ファイルのパスワードの外し方 6 2023/03/29 11:37
- PDF PDF作成ファイルの不具合の件 5 2022/08/15 15:00
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
BLOBやCLOBのパフォーマンスを改善したい
Oracle
-
BLOBデーターの画像の表示方法を教えてください。
PHP
-
FindFirst を複数条件で検索
Visual Basic(VBA)
-
-
4
レコードの登録順がおかしい
MySQL
-
5
変数名の付け方
Java
-
6
Oracleでの文字列連結サイズの上限
Oracle
-
7
VB.NETにてDB2のBLOB型のデータを取得したい
Visual Basic(VBA)
-
8
SQLPLUSで結果を画面に表示しない
Oracle
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数テーブルを検索するクエリ...
-
autorun がうまく動作しない
-
BLOB型のPDF出力の方法
-
PHP+MySQLで複数配列の挿入(IN...
-
エクセル内のURLからHPのタイト...
-
urlを短くする方法を探していま...
-
urlに表示されるxxxx.doの...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Accessでテーブル名やクエリ名...
-
Access テキスト型に対する指定...
-
SUBSTRING 関数に渡した長さの...
-
Accessのフィールド数が255しか...
-
「直需」の意味を教えてください
-
accessのレポートで元になるテ...
-
パススルークエリをテーブル作...
-
Accessでコードを入れると名前...
-
【Access】フォームで自動計算...
-
ORACLEでLONG項目からCHAR項目...
-
リンクテーブルを CopyObject ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
BLOB型のPDF出力の方法
-
TortoiseSVNのリポジトリブラウ...
-
エクセル内のURLからHPのタイト...
-
autorun がうまく動作しない
-
text型とuniqueについて
-
大量のPHPファイルからタイトル...
-
PHP+MySQLで複数配列の挿入(IN...
-
Webページ上のチェックボックス...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
「直需」の意味を教えてください
-
Accessでテーブル名やクエリ名...
-
Oracle 2つのDate型の値の差を...
-
Access テキスト型に対する指定...
-
Accessでテーブルの値をテキス...
-
Accessでコードを入れると名前...
-
変数が選択リストにありません
-
ACCESSのクエリで集計で、先頭...
-
作番ってどういう意味でしょうか?
-
Excelで空白以外の値がある列の...
おすすめ情報