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

كيف ادخال الى قواعد البيانات من ملف نصى txt ---ارجو تصحيح الكود الموجود

بدأه shivaa في 6 أكتوبر 2010 · 1 رد · 970 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بعد تجربه الكود وتعديل عليه على اساس الملف خاص بيه بيدخل سطر واحد فقط

ولا يعمل ادخال بعد ذالك حتى احزف السطر الا ادخله

  <?php
include 'config.php';
$filename = '/var/www/am.txt';
$spliter = ' ';
     $file = fopen($filename , "r") or exit("Unable to open file!");
     //Output a line of the file until the end is reached
     while(!feof($file))
     {
         $text = explode($spliter,fgets($file));
         $user = $text[1];
         $pass = $text[2];
         $SQL = mysql_query ("INSERT INTO users(user,pass) VALUES ('$user','$pass')") or die ("dddddddddddddd");
      }
      fclose($file);

?>

مع العلم ان الملف تنسيقه هو

x: sssssssssssss dddddddddddddd

x: sssssssssssss dddddddddddddd

x: sssssssssssss dddddddddddddd

x: sssssssssssss dddddddddddddd

ناتج اادخال فقط هو سطر واحد من مضمون الملف

تم تعديل هذه المشاركة بواسطة shivaa في 6 أكتوبر 2010 في 10:16

#2

ممكن يفيدك الموضوع التالي

http://www.al-mayahi.com/mysql/%D8%A7%D8%B3%D8%AA%D9%8A%D8%B1%D8%A7%D8%AF-%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA-%D9%86%D8%B5%D9%8A%D8%A9-%D9%81%D9%8A-mysql/

استيراد بيانات نصية في MySQL

تعليق واحد

VN:F [1.9.5_1105]

please wait...

Rating: 0.0/10 (0 votes cast)

في هذا الدرس سنتطرّق إلى كيفية استخراج البيانات من الملفّات النصية (Text Files) أو ملفّات (CSV).

المثال الأول: استخراج البيانات لحقل واحد

لنفترض أن لدينا ملف باسم names.txt يحتوي على أسماء الموظّفين في الشركة، ونريد تخزين الأسماء في قاعدة بيانات MySQL. ولنفترض أيضاً أن الجدول في قاعدة البيانات لا يحتوي سوى على حقل واحد مخصّص للاسم (سنتطرّق في المثال الثاني إلى طريقة استيراد أكثر من حقل في جدول واحد).

مثال على حقول الملف:

الاسم 1

الاسم 2

الاسم 3

وهكذا...

شيفرة الاستيراد:

1

2

3

4

LOAD DATA LOCAL INFILE "path"

INTO TABLE `names`

FIELDS TERMINATED BY '\r\n'

LINES TERMINATED BY '\r\n'

* path: مسار الملف.

* FIELDS TERMINATED BY: المحرف المستخدم لفصل الحقل، بما أنه ليس لدينا سوى حقل واحد للاسم إذاً سنضع \n\r بمعنى أن الحقل يقع في سطر جديد.

* LINES TERMINATED BY: المحرف المستخدم لفصل خطوط الملف، أيضاً سنضع \r\n كون الخط يقع في “سطر جديد”.

عند تنفيذ الشيفرة أعلاه سيتم استخراج الملف names.txt في الجدول names مباشرة (على فرض أن لديك حقل باسم name في الجدول أو أي اسم آخر، حقل واحد فقط وليس أكثر).

المثال الأول: استخراج البيانات لعدّة حقول

المثال الأول يعمل على استخراج الملف names.txt في حقل واحد فقط. في هذا المثال سنوضح كيف يمكننا استخراج الحقول وتخزينها في عدّة حقول طبعاً للحقل المستخرج.

سنقوم ببناء جدول لسجلات الهاتف لدينا، شيفرة الجدول هي كالتالي:

1

2

3

4

5

6

7

8

9

10

11

12

CREATE TABLE `phoneBook` (

`ID` INT(10) NULL AUTO_INCREMENT,

`fName` CHAR(25) NULL,

`lName` CHAR(25) NULL,

`phone` INT(11) NULL,

`fax` INT(11) NULL,

`email` CHAR(30) NULL,

PRIMARY KEY (`ID`)

)

COLLATE='utf8_general_ci'

ENGINE=MyISAM

ROW_FORMAT=DEFAULT

كما نلاحظ هناك حقول عديدة وليس حقل واحد كما في المثال الأول.

سيكون الملف النصي الذي نريد استيراده يحتوي على الهيئة التالي:

Ahmad Ali,0657987

Dania Ahmad,3245797

Faris Ali, 3249879

وهكذا....

نقوم الآن بتنفيذ شيفرة الاستيراد على الشكل التالي:

1

2

3

4

5

LOAD DATA LOCAL INFILE '/home/mydata/names.txt'

INTO TABLE `phonebook`

FIELDS TERMINATED BY ','

LINES TERMINATED BY '\r\n'

(`lname`, `fname`, `phone`)

سيتم استيراد الملف وتخزينه في سجلات الجدول phonebook في الحقول: fName و lName و phone.

ملاحظة: يمكن استخدام ENCLOSED BY في حال كانت الحقول تبدأ وتنتهي بمحرف معيّن، على سبيل المثال: عادةً ما تكون هيئة ملفات CSV على الشكل التالي:

"24";"Nabil"

"3";"Ali"

"23";"Amjad"

"22";"Majeed"

"21";"Amir"

"20";"Hani"

"19";"Sami"

"12";"Husain"

* يبدأ الحقل بـ ( ” ) وينتهي بنفس المحرف.

* تفصل الأسماء ( ; ).

* كل سطر يمثل سجل جديد \r\n.

سنقوم باستخدام ENCLOSED BY كما في المثال التالي لنستطيع استيراد الحقول:

1

2

3

4

5

6

LOAD DATA LOCAL INFILE '/home/mydata/file.txt'

INTO TABLE `phonebook`

FIELDS TERMINATED BY ';'

ENCLOSED BY '"'

LINES TERMINATED BY '\r\n'

(`lname`, `phone`)

تقوم ENCLOSED BY بتحديد المحارف التي تطوّق الحقل. في حالتنا هذه المحرف ( ” ).

كلمات مفتاحية

تحتوي LOAD FILE على كلمات مفتاحية أهمَّها:

* low_priority : يجبر السيرفر على الانتظار حتى إكمال بقية العمليّات المرتبطة بالجدول.

* concurrent : يتيح إمكانية الوصول إلى الجدول من باقي العمليات أثناء إدخال البيانات.

أتمنى أن تكون مقالة مفيدة للجميع.

بانتظار تعليقاتكم…

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

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

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

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

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