0

我将 BULK INSERT 添加到应用程序中,我的代码是这样的:

public void insertData(String filename, JTextField txt)
{

    File f = new File(txt.getText());
    String path = f.getAbsolutePath();
    String createString = "BULK INSERT dummy_import FROM ' " + path + "\\" +filename+ ".txt' WITH (FIELDTERMINATOR = ',')";
    String createStringdet = "BULK INSERT dummy_import_det FROM  " + path + "\\" +filename+ ".txt WITH (FIELDTERMINATOR = ',')";
    List <DummyImpor> dummyimpor = new ArrayList<DummyImpor>(); 
    List <DummyImporDet> dummyimpordet = new ArrayList<DummyImporDet>();
    int  jml_kemasan = 0;
    float bm = 0;
    try  
       { 
           // Create and execute an SQL statement that returns some data.  
            String SQL = "BULK INSERT dbo.dummy_import FROM ' " + path + "\\" +filename+ ".txt' WITH (FIELDTERMINATOR = ',') UNION BULK INSERT dbo.dummy_import_det FROM ' " + path + "\\" +filename+ ".txt' WITH (FIELDTERMINATOR = ',')";  
            DBConnection connect = new DBConnection();
            PreparedStatement ps = connect.getCon().prepareStatement(SQL);


            for (DummyImpor d: dummyimpor) {

                ps.setString(1, d.getSk_import());
                ps.setString(2, d.getSk_batch());
                ps.setString(3, d.getNo_pib());
ps.setInt(4, d.getJml_kemasan());


                for (DummyImporDet dt: dummyimpordet){

                    ps.setString(5, dt.getSk_import_det());
                    ps.setString(6, dt.getNo_hs());
ps.setFloat(7, dt.getBm_hs());

                }

                ps.addBatch();

            }
            ps.executeBatch(); // insert remaining records
            ps.close();

       }  
       catch(Exception e)  
       { 
            System.out.println(e.getMessage()); 
            System.exit(0);  
       } 
}

当我运行它时,但尚未导入数据,而该代码用于导入文本文件/数据。有谁知道解决方案?

4

1 回答 1

0

如果您使用的是 MSSQL,这看起来像是 BCP Utility 的工作。将两个数据集插入到临时表中会快得多,然后使用所需的记录执行 SELECT INTO 表。

http://msdn.microsoft.com/en-us/library/ms162802.aspx

于 2013-07-30T04:45:28.283 回答