SQLクエリの結果をCSVファイルまたはExcelファイルに書き込み、特定のフォルダに保存したいと思います。これはJavaプログラムを使用して達成できるかどうかを知りたいのですがこれは、任意のSQLクエリの結果に再利用することができます。私はまた、これはデータベースのさまざまなタイプ(オラクル、mysql、MS SQL Serverなど)に使用できるかどうかを知りたいです。私は電子メールに保存されたファイルを添付する予定ですSQLクエリの結果を電子メールに直接エクスポートすることができます)。助けてください。ここでSQLクエリ結果をCSVまたはExcelにエクスポート
答えて
は一例です:
import java.io.*;
import java.sql.*;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
public class ExcelFile {
public static void main(String[] args) {
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/test", "root", "root");
PreparedStatement psmnt = null;
Statement st = connection.createStatement();
ResultSet rs = st.executeQuery("Select * from student");
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Excel Sheet");
HSSFRow rowhead = sheet.createRow((short) 0);
rowhead.createCell((short) 0).setCellValue("Roll No");
rowhead.createCell((short) 1).setCellValue("Name");
rowhead.createCell((short) 2).setCellValue("Class");
rowhead.createCell((short) 3).setCellValue("Marks");
rowhead.createCell((short) 4).setCellValue("Grade");
int index = 1;
while (rs.next()) {
HSSFRow row = sheet.createRow((short) index);
row.createCell((short) 0).setCellValue(rs.getInt(1));
row.createCell((short) 1).setCellValue(rs.getString(2));
row.createCell((short) 2).setCellValue(rs.getString(3));
row.createCell((short) 3).setCellValue(rs.getInt(4));
row.createCell((short) 4).setCellValue(rs.getString(5));
index++;
}
FileOutputStream fileOut = new FileOutputStream("c:\\excelFile.xls");
wb.write(fileOut);
fileOut.close();
System.out.println("Data is saved in excel file.");
rs.close();
connection.close();
} catch (Exception e) {
}
}
}
はい!
jdbcを使用してさまざまなデータベースタイプに接続し、結果(Seen here)でExcelを作成できます。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class TestAccessExcel {
public static Connection getConnection() throws Exception {
String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
String url = "jdbc:odbc:excelDB";
String username = "username";
String password = "pass";
Class.forName(driver);
return DriverManager.getConnection(url, username, password);
}
public static void main(String args[]) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = getConnection();
stmt = conn.createStatement();
String excelQuery = "select * from [Sheet1$]";
rs = stmt.executeQuery(excelQuery);
while (rs.next()) {
System.out.println(rs.getString("BadgeNumber") + " " + rs.getString("FirstName") + " "
+ rs.getString("LastName"));
}
} catch (Exception e) {
System.err.println(e.getMessage());
} finally {
try {
rs.close();
stmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
これは、あなたがWindows環境にいる場合、これを処理するための本当に滑らかな方法です。また、同じアイデアがどの言語でも機能するという点で比較的ポータブルです。 Apacheの選択肢は悪い考えでもありません。 –
この例は、スプレッドシートの作成方法ではなく、Excelスプレッドシートから読み取る方法を示しています。 – datguy
これを行うには、クエリとドライバをすべて使用できる小さなコードを書く必要があります。最初の入力は、書き込み中のソフトウェアへの入力としてドライバ名でなければなりません。次に、書いているソフトウェアは、与えられたSQLを実行し、行と列だけを出力する位置になければなりません。
次のタスクでは、JavaアプリケーションのJDBCに由来するResultSetを解析します。いずれかの結果をCSVファイルに書き出すか、EXCELはそれを行うためのJava APIがどれくらい良いかに基づいています。
出力をCVSに書き込むことは簡単で、trivalではありません。私はExcelにデータをエクスポートすることに取り組んでいません。私はあなたがそれのための瓶を見つけると確信しています。
これは私のソリューションです。メインクラスに挿入する コード:
import java.io.*;
import java.sql.*;
import com.company.*;
/**
* Created by MAXNIGELNEGRO
*/
String[] filePath = new String[] {"C:\\Users\\Documents\\MyFile.csv"};
String[] driverDB = new String[] {"oracle.jdbc.driver.OracleDriver"};
String[] stringConnDB = new String[] {"jdbc:oracle:thin:@//127.0.0.1:1881/mydb"};
String[] userDB = new String[] {"pippo"};
String[] passDB = new String[] {"pluto"};
String[] charSep = new String[] {";"};
Boolean colomn= new Boolean (true);
String[] queryDB = new String[] {"select * FROM MYQUERY"};
try{
System.out.println("---------------File exist?------------" + filePath[0]);
File fileTemp = new File(filePath[0].toString());
if (fileTemp.exists()){
fileTemp.delete();
System.out.println("---------------DELETE FILE------------" + filePath[0]);
}
System.out.println("QUERY: ---->"+ queryDB[0].toString());
exportQueryToCsv exp = new exportQueryToCsv();
exp.exportQueryToCsv(filePath,driverDB,stringConnDB,userDB,passDB,queryDB, colomn,charSep);
if (fileTemp.exists()){
System.out.println("---File created---" + filePath[0]);
}
}
catch(Exception e){
e.printStackTrace();
}
コアクラス:
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/**
* Created by MAXNIGELNEGRO
*/
public class exportQueryToCsv {
public exportQueryToCsv(){}
public static void exportQueryToCsv (String[] filename, String[] driverDB, String[] connDB
, String[] userDB, String[] passDB, String[] queryDB, Boolean intestaFile
, String[] charSep) throws SQLException, IOException {
Statement stmt=null;
ResultSet rset=null;
Connection conn=null;
try { DBConn connessione = new DBConn();
conn=connessione.connect(driverDB[0],connDB[0],userDB[0],passDB[0]);
conn.setAutoCommit(false);
stmt = conn.createStatement();
rset = stmt.executeQuery(queryDB[0]);
ExportData2CSV csv = new ExportData2CSV();
csv.ExportData2CSV(rset,filename[0],intestaFile,charSep[0]);
csv.createFileCsv();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
finally {
if (stmt != null) {stmt.close();}
if (conn != null) {conn.close();}
if (rset != null) {rset.close();}
}
}
}
これは
import java.sql.*;
/**
* Created by MAXNIGELNEGRO
*/
public class DBConn {
public DBConn() {
}
public Connection connect(String driverDB, String db_connect_str, String db_userid, String db_password) {
Connection conn;
try {
Class.forName(driverDB).newInstance();
conn = DriverManager.getConnection(db_connect_str, db_userid, db_password);
} catch (Exception e) {
e.printStackTrace();
conn = null;
}
return conn;
}
}
データベースへの接続のためのクラスであるDBConn
これがResultSetするテーブルからデータを検索するためのクラスであり、openCSVのAPIを使用すると、CSVファイル
package com.company;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
/**
* Created by MAXNIGELNEGRO
*/
public class ExportData2CSV {
public ResultSet rset;
public String filename;
public Boolean colomnName;
public String charSep;
public void ExportData2CSV(ResultSet rset, String filename, Boolean colomnName, String charSep) {
this.rset = rset;
this.filename = filename;
this.colomnName = colomnName;
this.charSep = charSep;
}
public void createFileCsv() throws SQLException, IOException {
FileWriter cname = null;
try {
// WRITE COLOMN NAME
ResultSetMetaData rsmd = rset.getMetaData();
cname = new FileWriter(filename);
if (colomnName) {
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
cname.append(rsmd.getColumnName(i));
cname.append(charSep);
cname.flush();
}
cname.append(System.getProperty("line.separator"));
}
// WRITE DATA
while (rset.next()) {
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
if (rset.getObject(i) != null) {
String data = rset.getObject(i).toString().replaceAll(charSep, "");
cname.append(data);
cname.append(charSep);
} else {
String data = "null";
cname.append(data);
cname.append(charSep);
}
}
//new line entered after each row
cname.append(System.getProperty("line.separator"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (cname != null) {
cname.flush();
cname.close();
}
if (rset != null) {
rset.close();
}
}
}
}
への書き込みは、CSVファイルにデータをエクスポートすることができます。
CSVWriter writer = new CSVWriter(new FileWriter("yourfile.csv"), '\t');
Boolean includeHeaders = true;
java.sql.ResultSet myResultSet = .... //your resultset logic here
writer.writeAll(myResultSet, includeHeaders);
writer.close();
これは、これはあなたが読んで 1. INPUTスレッド4.main 1. INPUTスレッド2.outputスレッド3.data構造の3つのファイルを必要とするソリューションですこんにちは
input excel file containing records ExcelデータシートでありますSQLを書き出すためのExcelと出力スレッド 2.データ構造は、データを保持して転送することです。
(InputThread。ジャワ)
import java.io.*;
public class InputThread extends Thread{
String fp;
InputString is;
String tableName="emp";
String outFile;
InputThread(String FilePath,String nameOfTheTable,String outFileName){
fp=FilePath;
outFile=outFileName;
tableName=nameOfTheTable;
}
public void run(){
File file = new File(fp);
String line;
try{
BufferedReader br = new BufferedReader(new FileReader(file));
if((line=br.readLine()) != null)
is = new InputString(line);
//transform(is);
InputString tmp = new InputString(createTable(line));
//tmp.next = is;
is = tmp;
//tmp = tmp.next;
for(; (line = br.readLine()) != null;) {
tmp.next = new InputString(line);
tmp = tmp.next;
transform(tmp);
}
}catch(Exception e){ System.out.println("Error is :"+e); }
//traverse();
new OutputThread(is,outFile).start();
}
void transform(InputString x){
String[] arr = x.getLine().split(",");
String sql = "insert into "+tableName+" values(";
for(int i=0;i<arr.length;i++){
sql+="'"+arr[i]+"'";
if((i+1) < arr.length) sql+=",";
}
sql+=");";
x.setLine(sql);
}
String createTable(String x){
String[] arr = x.split(",");
String sql = "create database vamsidb "+ "use vamsidb "+"create table "+tableName+"(";
for(int i=0;i<arr.length;i++){
sql+=arr[i]+" varchar(50)";
if((i+1) < arr.length) sql+=",";
}
sql+=");";
return sql;
}
/*public void traverse(){
InputString tmp = is;
while(is != null){
System.out.println(is.getLine());
is=is.next;
}
}*/
}
(OutputThread.java)
import java.io.*;
public class OutputThread extends Thread{
InputString is;
String outFile;
OutputThread(InputString linkedList,String outFileName){
is=linkedList;
outFile = outFileName;
}
public void run(){
try{
FileOutputStream fos = new FileOutputStream(outFile);
while(is != null){
fos.write(is.getLine().getBytes());
is=is.next;
}
fos.close();
}catch(Exception e){
System.out.println("Error is :"+e);
}
}
}
(Main.java)
public class Main{
public static void main(String[] args){
InputThread it = new InputThread("sasken.csv","emp","output.sql");
it.start();
}
}
(DataStructure.java)
//このクラスは、データ構造を表します。入力を保持し、変換する // SQL文のリンクリストとしてのデータ
class InputString{
String line;
InputString next;
InputString(String x){
line = x;
}
String getLine(){
return line;
}
void setLine(String x){
line = x;
}
}
最も簡単な解決策。
メインメソッド
private List<String> resultSetArray=new ArrayList<>();
private String username =""; // Enter DB Username
private String password = ""; // Enter DB password
private String url = ""; // Enter DB URL
Connection connection=DriverManager.getConnection(url,user,pwd);
public static void main(String args[]) throws Exception{
fetchDataFromDatabase("SQL queries", connection);
printToCsv(resultArray);
}
fetchDataFromDatabase
以下のコードは、テーブル内の列の数をカウントし、その結果アレイに格納。
private void fetchDataFromDatabase(String selectQuery,Connection connection) throws Exception{
try {
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery(selectQuery);
int numCols = rs.getMetaData().getColumnCount();
while(rs.next()) {
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= numCols; i++) {
sb.append(String.format(String.valueOf(rs.getString(i))) + " ");
}
resultSetArray.add(sb.toString());
}
} catch (SQLException e) {
LOGGER.error("Sql exception " + e.getMessage());
}
}
printToCsv
public static void printToCsv(List<String> resultArray) throws Exception{
File csvOutputFile = new File(file_name);
FileWriter fileWriter = new FileWriter(csvOutputFile, false);
for(String mapping : resultArray) {
fileWriter.write(mapping + "\n");
}
fileWriter.close();
}
- 1. ExcelのSQL結果をExcelにエクスポート
- 2. SSMSクエリー結果をExcelまたはCSVにエクスポート
- 3. クエリ結果をSQL ServerのCSVファイルにエクスポート
- 4. SQLクエリ結果をtableauからcsvにエクスポート
- 5. クエリ結果をExcelシートにエクスポートする
- 6. エクスポートSQLクエリ結果が
- 7. delphi csv teditまたはtmemoボックスへのクエリ結果のエクスポート
- 8. $結果をCSVにエクスポート
- 9. SQL Server:クエリをCSVにエクスポート
- 10. sqlエージェントジョブの結果を.csvファイルにエクスポートします。
- 11. PHPを使用したCSVとしてのクエリ結果のエクスポート
- 12. SQLクエリ結果をCSVにエクスポートするときの特殊文字
- 13. neo4jでクエリ結果をcsvとしてエクスポートできません
- 14. クエリ結果としてのSQL CSV列
- 15. mySQLをexcelまたはcsvにエクスポート
- 16. クエリ結果のエクスポート
- 17. SQL Serverクエリの結果を直接Sqliteにエクスポートするには?
- 18. powershellを使用してクエリ結果をExcelシートにエクスポート
- 19. PHP変数結果をCSVにエクスポート
- 20. MYSQLの結果をCSVにエクスポート
- 21. Elasticsearchデータの結果をCSVファイルにエクスポート
- 22. ExcelでSQLクエリ結果をエクスポートし、電子メールで送信する
- 23. SQLタスククエリの結果をExcelの行にエクスポートする
- 24. SQL Serverストアドプロシージャの結果をExcelファイルにエクスポート
- 25. 選択クエリ結果のエクスポート
- 26. SQL - クエリ結果
- 27. MongoDBは集約アンワインドクエリの結果をCSVにエクスポートしますか?
- 28. .filedialogを使用してクエリ結果を新しいExcelファイルにエクスポートします。
- 29. MS Accessのクエリの結果をExcelの特定のシートにエクスポートするには
- 30. SQLクエリの結果をCSV形式に変換する方法
これは、あなたが探している正確に何である:https://www.youtube.com/watch?v=hlY_PoJhlMk(https://mvnrepository.com/ artifact/net.sf.automatic-report-generator) –