java - 是否有任何 JDBC 驱动程序支持 LOAD DATA INFILE sql 命令?

标签 java mysql database jdbc

您好,我想通过 JDBC 在多个数据库(如 DB2、Sybase、MySQL 等)上创建表。现在我需要使用包含数据空间分隔值的文本文件 data.txt 创建此表。例如

CustName OrderNo PhoneNo

XYZ      230     123456789
ABC      450     879641238    

现在这个 data.txt 包含数千条以空格分隔的记录值。我需要使用 java io 逐行解析这个文件并为每条记录执行 sql 插入查询。

我发现有 LOAD DATA INFILE sql 命令。是否有任何 JDBC 驱动程序支持此命令?如果不是,什么应该是解决此问题的最有效的快速方法。

请指导。提前致谢。

最佳答案

以下将通过 JDBC 工作。请注意,要使用 LOAD DATA INFILE,您需要 super 用户权限。您不需要 LOAD DATA LOCAL INFILE

Connection con = DriverManager.getConnection("jdbc:mysql://localhost/foobar", "root", "password");
Statement stmt = con.createStatement();
String sql = 
    "load data infile 'c:/temp/some_data.txt' \n" +
    "   replace \n" +
    "   into table prd \n" +
    "   columns terminated by '\\t' \n" +
    "   ignore 1 lines";
stmt.execute(sql);

如果您使用LOAD DATA INFILE,文件位置基于服务器的文件系统!如果您使用本地文件,那么显然它是基于客户端的文件系统。

关于java - 是否有任何 JDBC 驱动程序支持 LOAD DATA INFILE sql 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17313921/

相关文章:

java - hibernate 删除错误 : Batch Update Returned Unexpected Row Count

java - 具有任意 AND 子句的动态 spring 数据 jpa 存储库查询

java - 即使没有 "mapping"也使用 Java HashMap ?

php - 如何检查 'YYYY-MM-DD' 格式的日期和 PHP 中 'Unix Time stamp' 格式的日期?

php - MySQL 中的动态复选框和文本字段

sql - 从聚集复合键移动到顺序整数聚集键时性能下降

java - Glassfish 3 : How do I get and use a developers build so I can navigate a stack trace including Glassfish code?

MySQL 每个条件的最大值

php - DATETIME 保存为 0000-00-00 00 :00:00

php - 加密 session ID