我想在MySQL数据库中导入制表符分隔文件。我怎么能用Java做到这一点?
答案 0 :(得分:7)
这很模糊,但听起来像是一个特定于mysql的问题。这是manual for loading files。默认值为:
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
LINES TERMINATED BY '\n' STARTING BY ''
答案 1 :(得分:2)
将制表符分隔文件导入MySQL:
创建表格:
mysql> create table foo(id INT, mytext TEXT, sparkle DECIMAL(9,4));
Query OK, 0 rows affected (0.02 sec)
创建您的数据文件,将其放在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
然后导入文件:
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
查看表格。
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)
已加载行。
阅读我的mysqlimport命令,查看它可以做的所有事情。
答案 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会帮您找到一个。