Java 为什么teradata fastload如此之慢?

Java 为什么teradata fastload如此之慢?,java,teradata,Java,Teradata,我试着上传3MB非常小的csv文件,有30000行和4列。我花了一个多小时 cUrl = "jdbc:odbc:DSN; TYPE=FASTLOAD" ; Connection conn = DriverManager.getConnection(cUrl, username, password); String sql = "insert into Transactions(custID, transaction_date, amount, desc) values(?,?,?,?)"; Pr

我试着上传3MB非常小的csv文件,有30000行和4列。我花了一个多小时

cUrl = "jdbc:odbc:DSN; TYPE=FASTLOAD" ;
Connection conn = DriverManager.getConnection(cUrl, username, password);
String sql = "insert into Transactions(custID, transaction_date, amount, desc) values(?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);

    for ( ... ) 
    {
        ps.setString(1, custID);
        ps.setString(2, tran_date);
        ps.setString(3, amount);
        ps.setString(4, desc);
        ps.addBatch(); 
    }


    ps.executeBatch(); 

addBatch
运行非常平稳。我到
ps.executeBatch()的那些行它永远需要它。上传一个包含30000行的3MB csv文件花了一个多小时。加载30000行最长应在几秒钟内运行

您仍然使用了错误的连接字符串,ODBC中不支持FastLoad协议,TYPE=FastLoad可能会被默认忽略


事务表的主要索引是什么?一个不好的PI加上一个集合表可能会导致加载缓慢。

谢谢。我不指定主索引。你说的
SET
表是什么意思?我想你对odbc的看法是对的,所以我尝试切换到常规的,但机制TD2不支持单点登录。如果你不指定主索引,它可能会默认为第一列,这可能是一个非常糟糕的选择。一个表显示什么事务;返回?SET table表示不允许重复行,这可能会导致大量重复行检查。您也可以通过SHOW TABLE查看SET或MULTISET。我正在使用
创建表myTable AS(xxx,xxy,…)
我没有指定主键。我的行有重复的。如果我创建一些
id
主索引,它将是
1,2,3
,这将增加数据集的大小。但是这会导致更快的上传吗?您不需要指定主键,但应该根据每个值的行数和join/where访问来指定主索引。如果确实有完全重复的行,则不能使用FastLoad加载它们(除非指定“无主索引”,但这可能不利于进一步处理)