MySQL数据截断错误发生在Java应用程序中,但不是直接发生在MySQL上

时间:2012-09-14 10:08:21

标签: java mysql jdbc

我使用JDBC驱动程序连接到mysql数据库,并在我的java应用程序中使用“LOAD DATA INFILE”命令将文本文件加载(插入)到数据库中。我收到以下错误:数据截断:第1行 xxx 列的数据太长。

但是,如果我通过登录数据库并手动输入SQL手动加载相同的文本文件,则数据加载正常。

有人可以告诉我错误是什么吗?

我在Red Hat Enterprise Linux Server 5.8版上运行它,如果有帮助,jdk版本是1.5.0_16

这是用于加载数据的函数

    public static void loaddata(Connection conn, String filename, String tablename)
{
    try{
    Statement stmt = null;
    stmt = conn.createStatement();
    File file = new File(filename);
    file.getAbsolutePath().replace("\\", "\\\\");
    String cmd = "LOAD DATA INFILE '"
            + file.getAbsolutePath().replace("\\", "\\\\")
            + "' INTO TABLE " + tablename + " FIELDS TERMINATED BY \'^\'";
    stmt.executeUpdate(cmd);
    System.out.println("cmd     :" + cmd);
    }
    catch(SQLException sqle){
        sqle.printStackTrace();
    }
}

这是创建JDBC连接的功能:

    public static Connection createConnection()
{
    Connection conn=null;

    try {
        Class.forName("com.mysql.jdbc.Driver").newInstance();
    }       
    catch(Exception e) {
        e.printStackTrace();
    }
    try {
        String url = ""; //URL mentioned in the actual code
        conn = DriverManager.getConnection(url, user, pass);
    } catch (SQLException sqe1) {
        sqe1.printStackTrace();
    }
    return conn;
}

0 个答案:

没有答案