【发布时间】:2017-03-22 11:08:17
【问题描述】:
我必须从 FTP 位置读取大型(例如 20mb)管道分隔文件并存储到数据库中。最好的方法是什么。
一些方法: 1.将文件复制到本地,然后读取并保存到数据库。 2.直接从流中读取并保存到数据库中。
请提出一些有效的方法。
【问题讨论】:
标签: java ftp inputstream bufferedreader
我必须从 FTP 位置读取大型(例如 20mb)管道分隔文件并存储到数据库中。最好的方法是什么。
一些方法: 1.将文件复制到本地,然后读取并保存到数据库。 2.直接从流中读取并保存到数据库中。
请提出一些有效的方法。
【问题讨论】:
标签: java ftp inputstream bufferedreader
我认为option-1会更好,
在选项 2 的情况下 - 如果出现异常怎么办 - 在使用流读取文件时或在 DB 中写入文件时出现异常,您将如何确切知道失败的位置,
使用选项 1,您可以存储文件 temp directory ,然后将文件写入 DB,然后从 temp 目录中删除或存档。
在文件系统上存档文件会更可取 - 它将在将来的参考中使用。
两者都有很多例子 -
对于从 ftp 下载文件,您可以按照 - http://www.codejava.net/java-se/networking/ftp/java-ftp-file-download-tutorial-and-example
【讨论】:
当它是 sql 或 csv 文件时,您可以通过 ssh 尝试。
mysql -u root -p
set global net_buffer_length=1000000; --Set network buffer length to a large byte number
set global max_allowed_packet=1000000000; --Set maximum allowed packet size to a large byte number
SET foreign_key_checks = 0; --Disable foreign key checking to avoid delays,errors and unwanted behaviour
source file.sql --Import your sql dump file
SET foreign_key_checks = 1; --Remember to enable foreign key checks when procedure is complete!
【讨论】: