自己投資としてチャレンジしている内容を Blog で公開しています。
今回は SQL Server に接続し Select した結果をローカルファイルに出力する Java コードを紹介します。(In English: Java – Put SQL Server select results into a csv file No.70)
▼1. 事前準備
Ubuntu 上にインストールされた SQL Server に対して Select 文を実行します。
1-1. SQL Server のインストール
クイック スタート:Ubuntu に SQL Server をインストールし、データベースを作成する
1-2. Visual Studio Code のインストール
sudo snap install --classic codehttps://code.visualstudio.com/docs/setup/linux
1-3. Maven のインストール
Apache Kafka Word Count 実装 – Java No.44 “2-3. Apache Maven のインストール” の部分
1-4. SQL Server のサンプルデータの作成
SQL Server サンプルデータの作成 – Python No62
1-5. SQL Server で Select 文実行
SQL Server への Select の実行に関わる Java の実装はこちらが参考になります。
Java SQL Server on Linux で select を実行する方法 No8
▼2. SQL Server に接続し Select した結果をローカルファイルとして出力する Java コード
2-1. ディレクトリを作成
アプリケーションを作成するため、ディレクトリを作成します。
mkidr sqlsrvtest
cd sqlsrvtest2-2. Apache Maven によるプロジェクトを作成
mvn archetype:generate -DinteractiveMode=false -DgroupId=org.example.sqlsrv -DartifactId=sqlSrvOutput -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4(出力の一部) xxxx [INFO] Generating project in Batch mode [INFO] Archetype repository not defined. Using the one from [org.apache.maven.archetypes:maven-archetype-quickstart:1.4] found in catalog remote [INFO] ------------------------------------------------------------------- [INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4 [INFO] -------------------------------------------------------------------- [INFO] Parameter: groupId, Value: org.example.sqlsrv [INFO] Parameter: artifactId, Value: sqlSrvOutput [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: package, Value: org.example.sqlsrv [INFO] Parameter: packageInPathFormat, Value: org/example/sqlsrv [INFO] Parameter: version, Value: 1.0-SNAPSHOT [INFO] Parameter: package, Value: org.example.sqlsrv [INFO] Parameter: groupId, Value: org.example.sqlsrv [INFO] Parameter: artifactId, Value: sqlSrvOutput [INFO] Project created from Archetype in dir: /home/xxx/sqlSrvOutput [INFO] -------------------------------------------------------------------- [INFO] BUILD SUCCESS [INFO] -------------------------------------------------------------------- [INFO] Total time: 3.063 s [INFO] Finished at: 2022-11-08T10:51:27+09:00 [INFO] --------------------------------------------------------------------
2-3. デフォルトで作成された App.java および AppTest.java を削除
rm ./src/main/java/org/example/sqlsrv/App.java
rm ./src/test/java/org/example/sqlsrv/AppTest.java2-4. Visual Studio Code を起動
code .2-5. pom.xml に、SQL Server への接続および操作のための library を追記し保存 (Ctrl+S)
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>11.2.1.jre8</version>
</dependency>
</dependencies>2-6. sqlsrvlocaloutput.java を作成
package org.example.sqlsrv;
import java.io.FileNotFoundException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class sqlsrvlocaloutput {
// select data from SQL Server
public static void main(String[] args) throws SQLException {
String url = "jdbc:sqlserver://localhost:1433;databaseName=sampledb;user=sa;password=yourpassowrd;encrypt=false;";
Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from dbo.sampletable");
List<String> list = new ArrayList<String>();
while (rs.next()) {
String ID = rs.getString("id");
String NUM = rs.getString("num");
String cdatetime = rs.getString("cdatetime");
String note = rs.getString("note");
String str = ID + "," + NUM + "," + cdatetime + "," + note;
list.add(str);
}
rs.close();
stmt.close();
conn.close();
// save local file
String filename = "/home/xxx/sqlSrvOutput.csv";
try {
java.io.PrintWriter output = new java.io.PrintWriter(filename);
for (int i = 0; i < list.size(); i++) {
output.println(list.get(i));
}
output.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}2-7. 実行後 csv ファイルの生成
sqlSrvOutput.csv の中身は以下となります。
1,0,2022-10-20 16:13:13.477,init 2,1,2022-10-20 16:12:11.777,a 3,2,2022-10-20 16:12:11.777,ah 4,3,2022-10-20 16:12:11.777,lam 5,4,2022-10-20 16:12:11.777,nddv 6,5,2022-10-20 16:12:11.777,vdhpw 7,6,2022-10-20 16:12:11.777,fdfszy 8,7,2022-10-20 16:12:11.777,rgofcgt 9,8,2022-10-20 16:12:11.777,hezwdqae 10,9,2022-10-20 16:12:11.777,bywqcunva
▼3. 参考情報
1. Java SQL Server on Linux で select を実行する方法 No8
2. クイック スタート:Ubuntu に SQL Server をインストールし、データベースを作成する
3. VS Code のインストール https://code.visualstudio.com/docs/setup/linux
4. Maven のインストール Apache Kafka Word Count 実装 – Java No.44
5. SQL Server サンプルデータの作成 – Python No62
以上です。参考になりましたら幸いです。