Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как мога ефективно да прочета над 15 милиона записа от SQL Server, да направя малко обработка и да ги запиша в плосък файл?

Изглежда, че jdbc драйверът за sql-сървър зачита подсказката за fetchsize (която подсказва колко реда да се четат наведнъж), така че трябва да можете да подадете една заявка и да преминете през набора от резултати, като обработвате и записвате редове във файла като отидете. Напр.:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка 'datetime2' при използване на структура на обект в VS 2010 .net 4.0

  2. Лесен начин за транспониране на колони и редове в SQL?

  3. Предотвратяване на SQL инжектиране в ASP.Net

  4. Каква е разликата между временна таблица и променлива на таблица в SQL Server?

  5. Как да промените цвета и шрифтовете в SQL Server Management Studio (SSMS) - SQL Server / TSQL урок, част 12