Java - รบกวนสอบถามโค้ดการอ่านไฟล์.csv แล้วนำค่ามาเช็คในฐานข้อมูล และทำการ update หรือ insert คะ
บทความนี้เลยครับ
Java Import CSV to Database
Date :
2013-10-28 10:27:37
By :
mr.win
ลองเข้าไปศึกษาเกี่ยวกับ JDBC การ Select/Insert/Update และ Delete ก็ได้แล้วครับ
Date :
2013-10-28 11:01:31
By :
mr.win
ตอบความคิดเห็นที่ : 3 เขียนโดย : mr.win เมื่อวันที่ 2013-10-28 11:01:31
รายละเอียดของการตอบ ::
ลองสึกษาแล้วคะ แต่ยังมองไม่ออกว่าต้องเริ่มต่อยังไงดีคะ
ตอนนี้สร้างโค้ดที่ดึงไฟล์ csv มาอ่านค่า id และอ่านที่อยู่ไฟล์
ตามโค้ดด้านล่างนี้คะ แต่มาติดตรงที่ต้องเริ่มการเปรียบเทียบเช็ค ในฐานข้อมูลและจัดการอัพเดทลงไปยังไงต่อคะ
Code (Java)
public class TerminateCSVManager {
private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.US);
public Map getUser(String server,String username,String password,String filePath){
Map map =new HashMap<String,User>();
FTPClient ftp = new FTPClient();
try {
//ftp.connect("57.59.2.187");
ftp.connect(server);
//if (!ftp.login("patcels", "P@tcEl$5"))
if (!ftp.login(username,password))
{
ftp.logout();
}
ftp.setFileType(FTP.BINARY_FILE_TYPE);
FTPFile[] files = ftp.listFiles(filePath);
//System.out.println(files);
String filenameMax="";
Date timesMax=null;
boolean haveFiles=false;
boolean firstTime=false;
if(files!=null && files.length>0){
int size=files.length;
Date[] times=new Date[size];
String[] name=new String[size];
for (int i = 0; i < size; i++) {
FTPFile file =files[i];
times[i]=file.getTimestamp().getTime();
name[i]=file.getName();
if(name[i].indexOf(".csv")!=-1){
String[] filename=name[i].split(".csv");
Date d=null;
try {
d=dateFormat.parse(filename[0]);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if(!firstTime){
timesMax=d;// times[i];
filenameMax=name[i];
firstTime=true;
}else{
if(d.after(timesMax)){
timesMax=d;
filenameMax=name[i];
}
}
}
}
haveFiles=true;
}
if(haveFiles && filenameMax!=null && filenameMax.length()>0){
CSVReader reader=null;
InputStreamReader inReader=null;
try {
System.out.println("filePath & filename=="+(filePath+filenameMax));
inReader=new InputStreamReader(ftp.retrieveFileStream(filePath+filenameMax));
reader= new CSVReader(inReader, ',');
String [] nextLine;
try {
while ((nextLine = reader.readNext()) != null) {
User User =new User();
String id =nextLine[0];
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(inReader!=null){
inReader.close();
}
if(reader!=null){
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
} ftp.noop(); // check that control connection is working OK
ftp.logout();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally
{
if (ftp.isConnected())
{
try
{
ftp.disconnect();
}
catch (IOException f)
{
// do nothing
}
}
}
return map;
}
public static void main(String[] args) throws IOException {
PaeManager a = new PaeManager();
Map map =a.getPaeMap("57.59.2.187","patcels","P@tcEl$5","/Terminated/");
ArrayList<String> Usename = new ArrayList<String>(map.values());
Usename = printMap(map);
System.out.println("Size of Value list from Usename: " + Usename.size());
for(int i = 0;i<Usename.size();i++){
System.out.println("Usename : "+Usename.get(i));
}
}
public static ArrayList<String> printMap(Map mp) {
Iterator it = mp.entrySet().iterator();
ArrayList<String> Usename = new ArrayList<String>();
while (it.hasNext()) {
Map.Entry pairs = (Map.Entry)it.next();
Usename.add(pairs.getKey().toString());
it.remove();
}
return Usename;
}
}
ส่วนนี้คือ output ที่อ่านได้จากไฟล์ csv ว่ามี id ไหนบ้าง
Date :
2013-10-29 10:59:37
By :
inspyz
Load balance : Server 04