Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để tôi có thể đọc hiệu quả hơn 15 triệu bản ghi từ SQL Server, thực hiện một số xử lý và ghi chúng vào một tệp phẳng?

Có vẻ như trình điều khiển jdbc cho sql-server tôn trọng gợi ý kích thước tìm nạp, (gợi ý có bao nhiêu hàng để đọc một lúc), vì vậy bạn có thể đưa ra một truy vấn và lặp qua tập kết quả của mình, xử lý và ghi các hàng vào tệp như anh đi. Ví dụ:

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. SQL Server chuyển đổi chuỗi thành datetime

  2. Làm thế nào để chuyển đổi từ định dạng ngày này sang định dạng ngày khác, trong máy chủ Microsoft SQL?

  3. SQL Server Internals:Các toán tử có vấn đề Pt. II - Băm

  4. Nhận ID hàng được chèn cuối cùng (với câu lệnh SQL)

  5. Chuyển đổi float thành varchar trong SQL Server mà không có ký hiệu khoa học