如何使用Java导入MySQL数据库中的制表符分隔文件?

时间:2011-07-01 05:56:02

标签: java mysql tab-delimited

我想在MySQL数据库中导入制表符分隔文件。我怎么能用Java做到这一点?

5 个答案:

答案 0 :(得分:7)

这很模糊,但听起来像是一个特定于mysql的问题。这是manual for loading files。默认值为:

FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
LINES TERMINATED BY '\n' STARTING BY ''

答案 1 :(得分:2)

将制表符分隔文件导入MySQL:

  1. 创建表格:

    mysql> create table foo(id INT, mytext TEXT, sparkle DECIMAL(9,4));
    Query OK, 0 rows affected (0.02 sec)
    
  2. 创建您的数据文件,将其放在foo.txt中,注意标签分隔3列

    1   twilight sparkle is best pony!  6.6 
    2   pinkie pie is best pony!    3.3 
    3   derpy hooves is best pony!  1.1 
    
  3. 然后导入文件:

    mysqlimport --fields-terminated-by='\t' 
                --columns=id,mytext,sparkle 
                --local -u root -ppassword your_database foo.txt
    yourdatabase.foo: Records: 4  Deleted: 0  Skipped: 0  Warnings: 3
    
  4. 查看表格。

    mysql> select * from foo;
    +------+-------------------------------+---------+
    | id   | mytext                        | sparkle |
    +------+-------------------------------+---------+
    |    1 | twilight sparkle is best pony |  6.6000 |
    |    2 | pinkie pie is best pony       |  3.3000 |
    |    3 | derpy hooves is best pony     |  1.1000 |
    +------+-------------------------------+---------+
    4 rows in set (0.00 sec)
    
  5. 已加载行。

    阅读我的mysqlimport命令,查看它可以做的所有事情。

    http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html

答案 2 :(得分:0)

使用Scanner API读取文件并创建动态SQL语句。之后使用JDBC preparedStatement并执行它们。

答案 3 :(得分:0)

打开与数据库的JDBC连接。创建一个准备好的语句以在表中插入一行。逐行读取文件。您可以使用OpenCSV之类的东西来帮助您。对于每一行,绑定预准备语句的参数并执行它。关闭准备好的语句,连接和文件阅读器。

阅读http://download.oracle.com/javase/tutorial/jdbc/basics/index.html以学习JDBC。

答案 4 :(得分:0)

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("myfile.tab")));

String line = null;

while((line = reader.readLine()) != null) {
    String[] fiedls = line.split("\\t");
    // generate your SQL insert statement here
    // execute SQL insert.
}

如果您不熟悉SQL和/或JDBC,请参阅相应的教程。 Google会帮您找到一个。