sql >> データベース >  >> RDS >> Sqlserver

SQL Server から 1,500 万以上のレコードを効率的に読み取り、何らかの処理を行い、それらをフラット ファイルに書き込むにはどうすればよいでしょうか?

    sql-server の jdbc ドライバーは fetchsize ヒント (一度に読み取る行数を示唆する) を尊重しているように見えるため、1 つのクエリを発行して結果セットを反復処理し、行を処理してファイルに書き込むことができるはずです。あなたが行く。例:

    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. Laravel Migrationは、データがテーブルに入った後にフィールドを追加しますか?

    2. MySQLのインストール

    3. 複数の列でグループ化された行のグループから最大値の行を選択します(PSQL)

    4. 自動インクリメントが適用された場合、MySQLは削除されたIDを再利用しますか