No.1ベストアンサー
- 回答日時:
どのように・・・と言いますと? どこから説明すればいいのでしょうか?(^_^;
「Excelに出力」というニュアンスから、やりたいことを100%実現するのは多分無理かな・・・と思うのですが。
とりあえず、ちょっと長いですが、簡単なサンプルを付けておきますね。
このサンプルは、
>java DBWriter ファイル名 "SQL文"
とすると動くもので、指定したファイル名にSQLの結果をCSV形式で吐き出します。
実行例)
>java DBWriter C:\tmp\TEST.csv "SELECT * FROM EMP"
ちょっとインデントがなくて見にくいですが、テキストエディタ等に貼り付けて見やすくしてください。
バグ取りはしてませんので、悪しからず。
-------------------------------------------------------------
import java.io.*;
import java.util.*;
import java.sql.*;
public class DBWriter {
public DBWriter() {
super();
}
public static void main(java.lang.String[] args) {
if (args.length != 2) {
System.out.println("起動方法が違います");
System.exit(1);
}
else {
try {
DBWriter dbWriter = new DBWriter();
// 引数1をファイル名、引数2をSQL文として扱う
dbWriter.createCSV(args[0], args[1]);
}
catch (Exception e) {
// 何らかのエラーがあっても、表示するのみ
System.out.println("エラーです");
e.printStackTrace();
}
}
}
protected void createCSV(String fileName, String sql) throws Exception {
// ドライバクラス名。これはOracleの場合の例。
String driverName = "oracle.jdbc.driver.OracleDriver";
// JDBCドライバURL。これはOracleの場合。
String connURL = "jdbc:oracle:thin:@172.20.108.51:1521:NDCORE2";
String connUID = "ibm07s"; // DBの接続ユーザ名
String connPWD = "ibm07s"; // DBの接続パスワード
Vector datas = new Vector(); // データ格納用の可変長配列
// データベースに接続する
Class.forName(driverName);
Connection conn = DriverManager.getConnection(connURL, connUID, connPWD);
// SQLを発行する
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
// ファイルをオープンする(ようなもの)
File file = new File(fileName);
FileWriter fw = new FileWriter(file);
// データベースの列名定義を取得する
ResultSetMetaData rsmd = rs.getMetaData();
int cnt = rsmd.getColumnCount();
for (int idx = 1; idx <= cnt; idx++) {
String colName = rsmd.getColumnName(idx);
datas.add(colName);
}
// 列名をファイルに書き出す
writeData(fw, datas);
// データベースの各列のデータを取得する
while (rs.next()) {
for (int idx = 1; idx <= cnt; idx++) {
String data = rs.getString(idx);
datas.add(data);
}
// 各列のデータをファイルに書き出す
writeData(fw, datas);
}
// ファイルを閉じる
fw.close();
}
protected void writeData(FileWriter fw, Vector datas) throws IOException {
String buf = ""; // ファイルに書き出す文字列を入れるところ
// データが空でなかった場合のみ実行
if (datas != null && !datas.isEmpty()) {
for (int idx = 0; idx < datas.size(); idx++) {
// 先頭以外で、カンマをつける
if (idx > 0) {
buf += ",";
}
// 取り出したデータを文字列にくっつける
buf += (String)datas.get(idx);
}
// 行末に改行を入れる
buf += "\n";
// できた文字列をファイルに書き出す
fw.write(buf);
// もらったデータを空にする
datas.clear();
}
}
}
ありがとうございます!!
CSV出力ができてました。
実際は、サーブレットで動かしてCSV出力します。
ですから、参考にして作成してみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロを教えてください。 7 2023/06/01 19:47
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- Google Drive スプレッドシートでCSV出力をすると、""が付く値と付かない値があります。解決策を教えてください。 1 2022/04/09 23:43
- Excel(エクセル) Excelについて教えてください。 帳票データがあります。 アクセスに取り込むため、 データ形式にし 1 2022/06/08 19:59
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Excel(エクセル) Excelの帳票形式をアクセスに取り込むため、 csvのデータ形式になるように、マクロを作成している 2 2022/06/12 22:52
- その他(プログラミング・Web制作) pythonのpandasのcsvの外部結合(outer_join)した際に列が想定とは異なる事象 1 2022/05/25 13:23
- その他(プログラミング・Web制作) データ解析ソフトRでのファイル入力read.csvがエラーになります 7 2022/03/27 22:11
- Visual Basic(VBA) VBAで特定の場所にあるCSVファイル(複数)から特定場所を抜き出してExcelに転記したいです。 11 2023/05/23 16:29
- その他(プログラミング・Web制作) Fortranでの出力ファイル 2 2023/03/21 21:25
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
データ数をカウントしたいのですが
Java
-
count(*)で取得した値をJAVAの変数に代入するには?
Java
-
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
-
4
レコード件数の表示
Java
-
5
正しいURL指定しているにもかかわらずJSPファイルにアクセスできず「404エラー」が発生
Java
-
6
javaでDBから取得したデータのJSP表示
Java
-
7
Eclipseで、プロジェクト名のところに赤いバッテンのエラーマークが
Java
-
8
Javaで任意のパスへ任意のファイル名でCSV出力する方法
Java
-
9
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
10
「例外 *** は対応する try 文の本体ではスローされません。」について。
Java
-
11
JSPからJSPへ情報を渡せる?
Java
-
12
jsp~jspにhiddenを使って変数を飛ばしたい
JavaScript
-
13
ダブルクォーテーション(””)を出力する方法(java)
Java
-
14
Javaで年月の取得(YYYYMM形式で)
Java
-
15
チェックボックスの有無判定
JavaScript
-
16
javaで質問です。 文字列2023/2/3(一桁の場合、0埋めなし)の場合にyyyyMMddに変換
Java
-
17
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
18
JSP/Servlet DBからデータを読み込み、CSV形式でダウンロードさせる・・・・
Java
-
19
hiddenのvalueの値を変えたい
JavaScript
-
20
JSPでのリストボックス表示
Java
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
equalsの逆
-
InputStream.read()でタイムア...
-
yyyymmddからyyyy/mm/d...
-
csv出力について
-
javaのfor文が機能してないみた...
-
Class.forNameでエラーになる
-
Javaでデータに登録する度にID...
-
テキストファイルから空白行をよむ
-
Javaの質問です。テキストファ...
-
JavaでString型をChar型に変換...
-
テキストファイルにおいて任意...
-
FileクラスのcanRead/canWrite...
-
Java 読み込んだテキストファイ...
-
Inputstreamについて
-
Java FileDialog に関して
-
C言語のポインターに関する警告
-
IF関数でEmpty値を設定する方法。
-
System.err. printlnとSystem.o...
-
オブジェクトの中のプロパティ...
-
ページング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
equalsの逆
-
csv出力について
-
九九を横に表示する。
-
テキストファイルから空白行をよむ
-
Java int sum = 0は必要ですか?
-
[JAVA]エラーが解決できません。
-
javaのfor文が機能してないみた...
-
InputStream.read()でタイムア...
-
Servletでテキストボックスに入...
-
Javaでデータに登録する度にID...
-
Inputstreamについて
-
BufferedReaderでのエラー
-
FileクラスのcanRead/canWrite...
-
java連結
-
Java 読み込んだテキストファイ...
-
Javaの質問です。テキストファ...
-
テキストファイルの任意の文字...
-
Class.forNameでエラーになる
-
テキストファイルにおいて任意...
おすすめ情報