sql >> Databasteknik >  >> RDS >> Sqlserver

Hur kan jag effektivt läsa 15+ miljoner poster från SQL Server, göra lite bearbetning och skriva dem till en platt fil?

Det ser ut som att jdbc-drivrutinen för sql-server respekterar fetchsize-tipset, (vilket antyder hur många rader du ska läsa åt gången) så du bör kunna utfärda en fråga och iterera genom din resultatuppsättning, bearbeta och skriva rader till filen som du går. T.ex.:

public static void toFlat(Connection conn, File file, String destcode) {
    PreparedStatement ps = null;
    ResultSet rs = null;
    BufferedWriter out = null;
    try {
        ps = conn.prepareStatement(
            // col#:   1         2         3           4
            "SELECT threatid, lastname, firstname, flightnum " +
            "FROM travel.passengers " +
            "JOIN threats.aliases USING (firstname, lastname) " +
            "WHERE destination = ?" // param# 1
        );
        ps.setString(1,destcode); // param# 1

        out = new BufferedWriter(new FileWriter(file));


        // provides hint for driver to load x rows at a time:
        ps.setFetchSize(1000); 
        ps.executeQuery();
        rs = ps.getResultSet();

        while(rs.next()) {
            Integer threatid = rs.getInt(1);
            String lastname = rs.getString(2);
            String firstname = rs.getString(3);
            Integer flightnum = rs.getInt(4);

            //rubber meets road:
            String row = processRow(threatid, lastname, firstname, flightnum);
            out.write(row);
        }
    } catch(SQLException e) {
        // TODO
    } catch (IOException e) {
        // TODO
        e.printStackTrace();
    } finally {
        try {
            ps.close();
        } catch(Exception e){
            //TODO
        }
        try {
            rs.close();
        } catch(Exception e){
            //TODO
        }
        try {
            out.close();
        } catch(Exception e){
            //TODO
        }
    }
}


  1. SQLcl för att överföra data från Oracle till PostgreSQL eller YugabyteDB 🅾🐘🚀

  2. Konvertera SQL-fråga till Codeigniter Active Record

  3. Sök på partiella IP-adresser lagrade som heltal

  4. Guide för CTE i SQL Server