【问题标题】:Why teradata fastload is so slow?为什么 teradata fastload 这么慢?
【发布时间】:2014-04-09 16:16:19
【问题描述】:

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

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(); 线的人永远需要它。上传一个包含 30,000 行的 3 MB csv 文件需要一个多小时。是不是应该是这样的

【问题讨论】:

    标签: java teradata


    【解决方案1】:

    加载 30.000 行最多应在几秒钟内运行。

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

    事务表的主索引是什么?糟糕的 PI 加上 SET 表可能会导致加载缓慢。

    【讨论】:

    • 谢谢。我没有指定主索引。 SET 表是什么意思?
    • 我猜你对 odbc 的看法是对的,所以我尝试切换到常规但得到 `single sign on not supported for mechanism TD2 stackoverflow.com/questions/22237566/…
    • 如果您不指定主索引,它可能会默认为第一列,这可能是一个非常糟糕的选择。 SHOW TABLE transactions; 返回什么? SET 表意味着不允许重复行,这可能会导致大量的重复行检查。您也可以通过 SHOW TABLE 查看 SET 或 MULTISET。
    • 我正在使用CREATE TABLE myTable AS ( xxx, xxy, ..) 我不指定主键。我的行有重复。如果我创建一些 id 主索引,这将是 1,2,3 ,这将增加数据集的大小。但这会提高上传速度吗?
    • 您不需要指定主键,但您应该根据每个值的行数和连接/位置访问来指定主索引。而且,如果您确实有完全重复的行,则无法使用 FastLoad 加载它们(除非您指定“无主索引”,但这可能不利于进一步处理)
    猜你喜欢
    • 2012-12-18
    • 2021-09-03
    • 2016-09-28
    • 2020-02-08
    • 2012-07-17
    • 2011-11-07
    • 2015-08-24
    • 2013-08-06
    • 2014-07-16
    相关资源
    最近更新 更多