Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的大容量插入到少数表中_Java_Sql Server 2008_Bulkinsert - Fatal编程技术网

Java中的大容量插入到少数表中

Java中的大容量插入到少数表中,java,sql-server-2008,bulkinsert,Java,Sql Server 2008,Bulkinsert,我将批量插入添加到应用程序中,代码如下: 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'

我将批量插入添加到应用程序中,代码如下:

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);  
       } 
}
public void insertData(字符串文件名,JTextField-txt)
{
文件f=新文件(txt.getText());
字符串路径=f.getAbsolutePath();
String createString=“大容量插入伪\u从“+path+”\\“+filename+”.txt”导入,带(FIELDTERMINATOR=”,“)”;
String createStringdet=“大容量插入虚拟\u导入\u det,从“+path+”\\“+filename+”.txt和(FIELDTERMINATOR=”,“)”;
List dummyimpo=new ArrayList();
List dummyimportedet=newarraylist();
int jml_kemasan=0;
浮动bm=0;
尝试
{ 
//创建并执行返回一些数据的SQL语句。
String SQL=“BULK INSERT dbo.dummy\u import FROM”“+path+”\\“+filename+”.txt'WITH(FIELDTERMINATOR=”,“)UNION BULK INSERT dbo.dummy\u import\u det FROM”“+path+”\\“+filename+”.txt'WITH(FIELDTERMINATOR=”,“);
DBConnection connect=新的DBConnection();
PreparedStatement ps=connect.getCon().prepareStatement(SQL);
对于(DummyImpro d:DummyImpro){
ps.setString(1,d.getSk_import());
ps.setString(2,d.getSk_batch());
ps.setString(3,d.getNo_pib());
ps.setInt(4,d.getJml_kemasan());
对于(DummyImportDet dt:DummyImportDet){
ps.setString(5,dt.getSk_import_det());
ps.setString(6,dt.getNo_hs());
ps.setFloat(7,dt.getBm_hs());
}
ps.addBatch();
}
ps.executeBatch();//插入剩余记录
ps.close();
}  
捕获(例外e)
{ 
System.out.println(e.getMessage());
系统出口(0);
} 
}

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

如果您使用的是MSSQL,这看起来像是BCP实用程序的作业。将这两个数据集插入临时表,然后在包含所需记录的表中执行SELECT操作,速度会快得多


您是否考虑过保护自己免受SQL注入攻击?我不知道SQL注入攻击。这种情况是怎么发生的呢?看看这篇文章,它解释了SQL注入的基本原理以及如何防止它。我已经修改了代码,但现在的问题是数据还没有包含在mssql数据库中。你能给我提个主意吗?谢谢