الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ادخال بيانات من ملف نصي الى قاعدة بيانات

بدأه akram في 3 نوفمبر 2009 · 19 رد · 1,336 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

انا عندي ملف يحتوي على مايقرب 10000 ملخص لاوراق علميه وابحاث (abstracts form pubmed) ارغب في ادخال هذا الكم الهائل من المعلومات الى قاعدة بيانات....

لذلك اسئل فيما اذا كانت هناك طريقة او كود معين لادخال هذه البيانات بشكل ألى الى جدول مافي قاعدة بيانات...علما ان هذه البيانات عباره عن نصوص(text).

انظر الملف المرفق والذي يحتوي على عينه من الخلاصات...علما ان هذا بحث علمي وليس مشروع تجاري....

نرجوا المساعدة

pubmed_result.rar

زورو موقعنا

www.algabal.com

#2

لا يوجد شيء جاهز

قم بإنشاء برنامج خاص بك يقوم بهذه العملية

لو واجهت أي مشاكل اطرح المشكلة هنا وسنحاول حلها معك

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3

السلام عليكــم ورحمـة الله وبركاتــه ،،

الاخ علاء شكرا على الرد....

على العموم هذه محاولتي وان كانت متواضعه لعدم الخبرة.....على اي حال المشكلة لدي هي بعد قرائة الملف اردت ادخال النصوص من الملف الى الجدول ولكن للاسف لم انجح.

علما ان الجدول يتكون من خانتين ID و abstruct

شكرا مقدما

import java.io.*;
import java.sql.*;

public class FileInput {

  public static void main(String[] args) {
  		Statement statement;
  	 	Connection conn = null;  	
  	File file = new File("C:\\pubmed_result.txt");
    FileInputStream fis = null;
    BufferedInputStream bis = null;
    DataInputStream dis = null;
    try {
      fis = new FileInputStream(file);
      bis = new BufferedInputStream(fis);
      dis = new DataInputStream(bis);
      while (dis.available() != 0) {
        System.out.println(dis.readLine());
      }
      fis.close();
      bis.close();
      dis.close();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
     try
           {
               String userName = "root";
               String password = "";
               String url = "jdbc:mysql://localhost:3306/junkdb";
               Class.forName ("com.mysql.jdbc.Driver").newInstance ();
               conn = DriverManager.getConnection (url, userName, password);
               System.out.println ("Database connection established");
               statement = conn.createStatement(); 

               statement.executeUpdate ("INSERT INTO abstructs (ID, abstruct)"
               + " VALUES"
               + "('1', bis)");
           }
           catch (Exception e)
           {
               System.err.println ("Cannot connect to database server");
           }
           finally
           {
               if (conn != null)
               {
                   try
                   {
                       conn.close ();
                       System.out.println ("Database connection terminated");
                   }
                   catch (Exception e) { /* ignore close errors */ }
               }
           }
  }
}

زورو موقعنا

www.algabal.com

#4

ما هي المشكلة التي حصلت عليها بالضبط

تكلم أكثر

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#5

المشكلة هي انه عند تغير القيم

statement.executeUpdate ("INSERT INTO abstructs (ID, abstruct)"
+ " VALUES"
+ "('1', bis)");

الى قيم عاديه (id, strings)يقوم البرنامج بادخال القيم الى القاعدة ولكن عند تغير القيم الى الملف (الكود الاعلى) ليدخل الى DB يظهر الخطا ولا ينفذ البرنامج....

بمعنى ان المشكلة في الجزء المذكور بلاعلى.

زورو موقعنا

www.algabal.com

#6

ليس لدي وقت لتجربة برنامجك

أعطني رسالة الخطأ التي تحصل عليها

أعطني كل شيء يساعدني على فهم مشكلتك

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#7
اقتباس
الى قيم عاديه (id, strings)يقوم البرنامج بادخال القيم الى القاعدة ولكن عند تغير القيم الى الملف (الكود الاعلى) ليدخل الى DB يظهر الخطا ولا ينفذ البرنامج....

بمعنى ان المشكلة في الجزء المذكور بلاعلى.

لا أفهم شيئ , أرجو التوضيح

statement.executeUpdate ("INSERT INTO abstructs (ID, abstruct)"
+ " VALUES"
+ "('1', bis)");

أعتقد أن هذا الكود سوف يسبب مشكله, ال "bis" لن تستطيع قاعدة البيانات التعرف على هذا المتغير

هلا وضحت شكل البيانات في هذا الملف كي نساعدك :

اقتباس
1. Clin Exp Allergy. 2009 Nov;39(11):1764-73.

Component-resolved diagnosis of pollen allergy based on skin testing with

profilin, polcalcin and lipid transfer protein pan-allergens.

Barber D, de la Torre F, Lombardero M, Antépara I, Colas C, Dávila I, Tabar AI,

Vidal C, Villalba M, Salcedo G, Rodríguez R.

Departamento de I+D, ALK-Abelló, Madrid, Spain. domingo.barber@alk-abello.com

BACKGROUND: Allergy diagnosis needs to be improved in patients suffering from

pollen polysensitization due to the existence of possible confounding factors in

this type of patients. OBJECTIVE: To evaluate new diagnostic strategies by

comparing skin responses to pan-allergens and conventional allergenic extracts

with specific IgE (sIgE) to purified allergen molecules. METHODS: One thousand

three hundred and twenty-nine pollen-allergic patients were diagnosed by a

combination of an in vitro method with a panel of 13 purified allergens,

including major allergens and pan-allergens, using a high-capacity screening

technology (ADVIA-Centaur) and skin prick test (SPT) to pan-allergens and

conventional extracts. RESULTS: There was a high concordance (kappa index)

between in vitro (sIgE to major allergens) and in vivo (SPT to conventional

extracts) methods in patients who were not sensitized to pan-allergens, but SPT

with conventional extracts failed to diagnose patients with sensitization to

pan-allergens. In patients who were simultaneously sensitized to polcalcins and

profilins, there was a duplication both in the number of sensitizations to major

allergens and in the years of disease evolution. There was a statistical

association between sensitization to profilins and/or lipid transfer proteins and

food allergy (P<0.0001). CONCLUSION: The novel diagnostic strategy has proven to

be a valuable tool in daily clinical practice. Introduction of routine SPT to

pan-allergens is a simple and feasible way of improving diagnostic efficacy.

Patients sensitized to pan-allergens should be tested by an adequate panel of

allergenic molecules in order to identify the allergens that are responsible for

the allergic disease.

PMID: 19877313 [PubMed - in process]

2. Dev Dyn. 2009 Oct 29. [Epub ahead of print]

A co-dependent requirement of xBcl9 and Pygopus for embryonic body axis

development in Xenopus.

ما هو ال id , ما هو ال abstruct من كل هذا الكم من البيانات ؟؟!!!

#8

اخي فلنبدا خطوة خطوة.......

كما ذكرت سابقا لدي ملف نصي يحتوي على ملخصات ابحاث علميه (pubmed_result )ارغب في تخزين هذا الملف في جدول يسمى abstructsفي قاعدة البيانات juckdbانشات الكلاس المذكور الذي يقوم بقرائة الملفpubmed_resultمن ثم من المفترض ان يدخل النص الذي في الملف الى الجدول abstructsمن خلال المتغيرbisمع الاي دي 1في الحقول(ID, abstruct)"للجدول المذكور.

البرنامج قادر على ان يتصل بقاعدة البيانات ويمكن ان تضاف قيم الى الجدول لكن عندما تكون القيم قيم عاديه (ارقام وسلاسل حرفيه)...اما اذا بدلنا المدخل الى bis والذي هوا المتغير

الذي يمثل الملف المراد ادخال محتواه الى القاعدة لا يعمل البرنامج على سبيل المثال اذا غيرنا القيم الراد ادخالها الى ما هو عليه في الاسفل يعمل الكود ويدخل القيم الى الجدول:

import java.io.*;
import java.sql.*;

public class FileInput {

  public static void main(String[] args) {
		  Statement statement;
	   	Connection conn = null;	  
	  File file = new File("C:\\pubmed_result.txt");
	FileInputStream fis = null;
	BufferedInputStream bis = null;
	DataInputStream dis = null;
	try {
	  fis = new FileInputStream(file);
	  bis = new BufferedInputStream(fis);
	  dis = new DataInputStream(bis);
	  while (dis.available() != 0) {
		System.out.println(dis.readLine());
	  }
	  fis.close();
	  bis.close();
	  dis.close();
	} catch (FileNotFoundException e) {
	  e.printStackTrace();
	} catch (IOException e) {
	  e.printStackTrace();
	}
	 try
		   {
			   String userName = "root";
			   String password = "";
			   String url = "jdbc:mysql://localhost:3306/junkdb";
			   Class.forName ("com.mysql.jdbc.Driver").newInstance ();
			   conn = DriverManager.getConnection (url, userName, password);
			   System.out.println ("Database connection established");
			   statement = conn.createStatement(); 

			  statement.executeUpdate ("INSERT INTO abstructs (ID, abstruct)"  + " VALUES"  + 
			   + "('1', 'reptile'),"
			   + "('2', 'amphibian'),"
			   + "('3', 'fish'),"
			   + "('4', 'mammal')");



					  }
		  catch (Exception e){
			System.err.println ("Database error: " + e);
			e.printStackTrace();
}
		   finally
		   {
			   if (conn != null)
			   {
				   try
				   {
					   conn.close ();
					   System.out.println ("Database connection terminated");
				   }
				   catch (Exception e) { /* ignore close errors */ }
			   }
		   }
  }
}

زورو موقعنا

www.algabal.com

#9

أفهم من كلامك إنك عندك مجموعه من الملفات, و تريد أن تدخل كل ملف "كما هو" في قاعدة البيانات بالتركيب التالي :

رقم الملف - محتوي الملف, بحيث رقم الملف هو رقم تسلسلي أما المحتوي في الملف كامل بكل محتوياته دون أي معالجه.

أهذا ما تقصده ؟؟

#10

لا اخي هويدي....هوا ملف واحد يحتوي جميع الخلاصات (القي نظرة على الملف المرفق) كل خلاصة في هذا الملف اريدها ان تكون record في الجدول برقم مفتاح اولي ID

زورو موقعنا

www.algabal.com

#11

يا أخي, هل ضربت مثلا لهذا الخلاصه؟ أنا أحاول أن أستنبط أي شئ من هذا الملف ولا أستطيع

على كل, هذا datamining صح ؟

تم تعديل هذه المشاركة بواسطة {هويدي} في 6 نوفمبر 2009 في 00:46

#12

يا أخي أين نص الخطأ الذي تحصل عليه

ضعه هنا

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#13
akram كتب:
المشكلة هي انه عند تغير القيم

statement.executeUpdate ("INSERT INTO abstructs (ID, abstruct)"
+ " VALUES"
+ "('1', bis)");

الى قيم عاديه (id, strings)يقوم البرنامج بادخال القيم الى القاعدة ولكن عند تغير القيم الى الملف (الكود الاعلى) ليدخل الى DB يظهر الخطا ولا ينفذ البرنامج....

بمعنى ان المشكلة في الجزء المذكور بلاعلى.

الم تفكر لماذا ؟!

ببساطة لان الملف النصي ليس منسق ومجهز لادخال تلقائي للـ data base

حتى لو تعاملت معها بال mysql نفسها لن تقبل

السبب ببساطة

في المنطقة الي يكون فيها data النمطقة المقابلة احيانا null

نريد ان نطلع على نمط تصميم الجدول في الداتا بيس

راقب خلاصة معلوماتك في الملف النصي وترتيبها

#14

الاخوة الافاضل السلام عليكم.....

اقتباس
يا أخي, هل ضربت مثلا لهذا الخلاصه؟ أنا أحاول أن أستنبط أي شئ من هذا الملف ولا أستطيع

على كل, هذا datamining صح ؟

اخي هويدي الملف ليس الا ملف نصي ليس له اي تاثير على البرناج واعتبر للان انه يحتوي على اي كلام.

اقتباس
يا أخي أين نص الخطأ الذي تحصل عليه

ضعه هنا

الاخ علاء الصالحي الخطا كالاتي ولكن اتوقع انك ستقول ان هناك مشكلة في الاتصال بالداتا باس....اذا ساقول لا لانه اذا بدلنا الملف بقيم عاديه تتدخل عند اذ بسهوله الى الجدوي.

الخطا هو التالي:

 
Database error: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2214)
	at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:781)
	at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
	at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352)
	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:284)
	at java.sql.DriverManager.getConnection(DriverManager.java:582)
	at java.sql.DriverManager.getConnection(DriverManager.java:185)
	at FileInput.main(FileInput.java:34)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
	at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:343)
	at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2137)
	... 12 more
Caused by: java.net.ConnectException: Connection refused: connect
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
	at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
	at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
	at java.net.Socket.connect(Socket.java:519)
	at java.net.Socket.connect(Socket.java:469)
	at java.net.Socket.<init>(Socket.java:366)
	at java.net.Socket.<init>(Socket.java:209)
	at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)
	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:292)
	... 13 more

Process completed.

الاخ shado اعتقد انك اقتربت من الواقع....والجدول ليس الا جدول يتكون من عمودين الاول ID ,وهو عباره عن varchar والثاني لادخال النص وهو abstruct وهو longtext هذا كل شئ.

علما اني حاولت استخدام الاداة LOAD DATA INFILE في MySql

ولكن لم تدخل الا السطر الاول لذلك قلت لعلك تكون قربت قليلا.

الملف المرفق يحتوي على وصف ال DB

الاخوه شكرا على محاولة المساعدة

descr.DB.zip

زورو موقعنا

www.algabal.com

#15

ما هي نسخة mysql التي تستخدمها؟

هل أنت واثق من كون الخادم الخاص بقاعدة بيانات mysql يعمل

لأنه يبدو لي أنه لا يعمل

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#16

اخي الكريم

انا لا اقصد ال desc انا اقصد القيود على الجدول اي عندما قمت انت في تصميم جودلك وكتابة السورس

الــcheck هل حسبت بالحسبان خانة abstrcut ان تكون is null

abstrcut  varchar(100) check ( is null or is not null)

هل فهمت قصدي الكود السابق ليس صحيح !

بالاضافة ان تضع بالحسبان رد السيد الصالحي لان الخطأ يشير نوعا ما الى رده واستنتاجه

اضافة الى كل ذالك تفصيل ملفك text ليس نظاميا النقطة والفاصلة

حاول ان تسال الشباب في قسم mysql عن موضوع الفاصل بين الحقول

#17

الاخ علاء الخادم يعمل مئة بالمئة.....

الاخ شادو الحقول لايسمح فيها بالقيم نول..

والله يا اخوة نرجوا المساعدة..ان كانت هناك اي طريقة اخري لادخال مثل هذه المعلومات النصية الى قاعدة البيانات لكون ادخالها يدويا سيكون امرا صعب جدا.

زورو موقعنا

www.algabal.com

#18

ماذا عن المنافذ المسموحة في Firewall؟

هل تأكدت أن المنفذ متاح للإتصال عليه؟

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#19

الاخ علاء...سبق وان اوضحت انه امكن الاتصال يعد تغيير القيم....

على العموم ليس من الضروري هذا الكود او البرنامج ان صح التعبير.....

اذا كانت هناك اي طريقة اخرى لادخال مثل هذا الملف بالله لاتبخلو علينا.....ليس من العقول ان لا توجد مثل هكذا طريقة في لغة مثل الجافا.

زورو موقعنا

www.algabal.com

#20

اهاااااااااااااا

أتمنى لك التوفيق

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…