
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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
InputStream.read()でタイムア...
-
csv出力について
-
FileクラスのcanRead/canWrite...
-
JSPやサーブレットでSystem.out...
-
ループ処理の際、最後だけ","を...
-
プログラミングの問題です。大...
-
Javaで改行などが出来ないのです。
-
System.err. printlnとSystem.o...
-
ORA-01858: 数値を指定する箇所...
-
<forEach> 内で供給された "ite...
-
eclipseに記述したjavaファイル...
-
javaで質問です。 文字列2023/2...
-
C言語 重複しない4ケタの乱数...
-
IF関数でEmpty値を設定する方法。
-
double型変数値の整数部分のみ...
-
動的配列が存在(要素が有る)か...
-
java キーボード入力された値の...
-
「例外 *** は対応する try 文...
-
javamailで複数人にメールを送...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
yyyymmddからyyyy/mm/d...
-
テキストファイルから空白行をよむ
-
InputStream.read()でタイムア...
-
九九を横に表示する。
-
equalsの逆
-
Java int sum = 0は必要ですか?
-
csv出力について
-
BufferedReaderでのエラー
-
テキストファイルにおいて任意...
-
FileクラスのcanRead/canWrite...
-
[JAVA]エラーが解決できません。
-
Javaの質問です。テキストファ...
-
テキストファイルの任意の文字...
-
JAVAで、SSL通信
-
Class.forNameでエラーになる
-
javaのファイル読み込み時の文...
-
JAVAでエラーがでる。
-
Web上に表示されたデータをcsv...
-
java連結
-
linuxでapache poiが動かない。
おすすめ情報