【问题标题】:Using "LOAD DATA LOCAL INFILE" in Java在 Java 中使用“加载数据本地文件”
【发布时间】:2016-09-30 08:37:05
【问题描述】:

我有一个 cvs 文件,它的架构是,每个字段都用 " 包围,并用 分隔,每个元组都是一个带有 \n

的换行符

所以在我的 Java 文件中,我写了

                String path = "o.csv";
                String esquel = " LOAD DATA LOCAL INFILE " + path +
                            " INTO TABLE recommendations " +
                            " FIELDS TERMINATED BY \',\' ENCLOSED BY \'\"'" +
                            " LINES TERMINATED BY \'\\n\'";

我用下面的语句执行语句

statement.executeUpdate(esquel);

但它会抛出一个 SQLException,上面写着:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 你有一个 SQL 语法错误;检查与您对应的手册 MySQL 服务器版本,用于在 'o.csv INTO 附近使用正确的语法 TABLE 建议 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES' 在第 1 行

我的错误是什么?

如果你能帮助我,我将不胜感激。

谢谢

【问题讨论】:

    标签: java mysql load


    【解决方案1】:

    这是我测试的工作代码:

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    public class LoadTRPLog2MySql {
    
        public static void main(String[] args) {
    
            Class driver_class = null;
            try {
                driver_class = Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                return;
            }
            System.out.println("found driver" + driver_class);
    
    
            Connection connection = null;
            try {
                connection = DriverManager.getConnection("jdbc:mysql://mysqlserver.com:3306/dbname", "myid","pwd");
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
            try {
                System.out.println("Established connection to " + connection.getMetaData().getURL());
            } catch (SQLException e1) {
                e1.printStackTrace();
            }
    
            Statement statement = null;
            try {
                statement = connection.createStatement();
                Statement statement1 = connection.createStatement();
                //windows
                //statement1.executeUpdate( "LOAD DATA LOCAL INFILE 'C:\\Users\\senthil_sivasamy\\Documents\\Projects\\messageprocessing\\log.txt' INTO TABLE  trpwatchlog_tb FIELDS TERMINATED BY ' ' LINES TERMINATED BY '\\n'");
                //linux  ( " LOAD DATA LOCAL INFILE '/home/username/logname.log' INTO TABLE  logname.log FIELDS TERMINATED BY ' ' LINES TERMINATED BY '\\n'");
                statement.executeUpdate( "LOAD DATA LOCAL INFILE '/home/username/avail30trplog' INTO TABLE  logname.log FIELDS TERMINATED BY ' ' LINES TERMINATED BY '\\n'");
    
                statement1.execute("select * from dbname.tablelog_tb");
                ResultSet rs = statement1.getResultSet();
                System.out.println("Row hostname and timestamp");
                while(rs.next()) {
                    System.out.println("Row hostname and timestamp");
                    System.out.println(rs.getRow());
                    System.out.println(""+rs.getString("hostname"));
                    System.out.println(""+rs.getString("timestamp"));
                }
                rs.close();
            } catch(SQLException e) {
            } finally {
                if (statement != null) {
                    try {
                        statement.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      哦,我明白了!我没有用 '.

      包围我的路径文件

      新的sql语句应该是:

      String esquel = " LOAD DATA LOCAL INFILE '" + path +
                                  "' INTO TABLE recommendations " +
                                  " FIELDS TERMINATED BY \',\' ENCLOSED BY \'\"'" +
                                  " LINES TERMINATED BY \'\\n\'";
      

      【讨论】:

        猜你喜欢
        • 2018-12-19
        • 1970-01-01
        • 2014-10-23
        • 2016-10-28
        • 2015-04-26
        • 2011-02-02
        • 1970-01-01
        • 1970-01-01
        • 2015-12-02
        相关资源
        最近更新 更多