Akshay Hartalkar
02/21/2023, 12:09 PMJaromir Hamala
02/21/2023, 12:18 PMNicolas Hourcard
02/21/2023, 1:00 PMAkshay Hartalkar
02/21/2023, 1:05 PMJaromir Hamala
02/21/2023, 1:27 PMImre
02/21/2023, 1:40 PMimport io.questdb.client.Sender;
import java.sql.*;
public class DataMigration {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try (Sender sender = Sender.builder().address("questdbhost:9009").build()) {
String dbURL = "jdbc:sqlserver://...";
String user = "sa";
String pass = "pwd";
conn = DriverManager.getConnection(dbURL, user, pass);
String sql = "SELECT * FROM table_to_migrate";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while (rs.next()) {
// read record from SQL Server
String strField = rs.getString("NAME");
String symbolField = rs.getString("GENDER"); //return "M" or "F"
int intField = rs.getInt("AGE");
// write to QuestDB
sender.table("table_to_migrate")
.symbol("gender", symbolField)
.stringColumn("name", strField)
.longColumn("age", intField)
.atNow();
}
} catch (SQLException ex) {
ex.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
Jaromir Hamala
02/21/2023, 1:43 PMORDER BY
in the SQL query: To get results sorted by time. It will make the ingestion much faster. SELECT * FROM table_to_migrate ORDER BY ts ASC;
Alex Pelagenko
02/21/2023, 1:55 PMjavier ramirez
02/21/2023, 2:41 PMatNow(),
which would assign as designated timestamp the ingestion time. If that’s not what you want, then you can use .at(long)
to pass the nanoseconds value representing your timestampAkshay Hartalkar
02/22/2023, 5:53 AMjavier ramirez
02/22/2023, 9:18 AM