چگونه اطلاعات فارسی را از اکسل به MySQL ایمپورت کنم

Maryam.20

Member
سلام.
من برای تکمیل اطلاعات دیتا بیسم به 9800 رکورد احتیاج دارم که در قالب اکسل هست و لازمه که به دیتا بیس MySQL ریخته بشن. (فقط یکبار البته)
اما مشکل اینه که وقتی فایل CSV رو از پی اچ پی مای ادمین ایمپورت میکنم کاراکتر های فارسی به شکل علامت سوال ذخیره میشن و وقتی هم از کدهای فرومهای دیگه استفاده میکمنم اصلا کار نمیکنن...
من از روشی که در فایلهای پیوستی هست برای یونیکد کردن فایل CSV استفاده کردم اما باز هم مشکلم حل نشد.
در فرومهای دیگه هم که سرچ کردم از کلاس PHPExcel.php استفاده کرده بودند اما برای من جواب نداد و هیچ دیتای توی جدولم ریخته نشد. این نکته رو هم بگم که جدول من الان رکورد داره و این 9800تا باید به اونهایی که الان ذخیره شدن اضافه بشه درحالیکه کدهایی که دوستان در فرومها گذاشتند یه جدول مجزا برای اون کار تشکیل میده ....
من از این کد استفاده کردم:

[PHPS]
//include PHPExcel file
include('PHPExcel.php');
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objReader->setReadDataOnly(true);
//loading excel file
$objPHPExcel = $objReader->load('ar2.csv');
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow(); // e.g. 10

for ($row = 1; $row <= $highestRow; ++$row) {
$rows[$row]['test_id'] = $model->id;
$rows[$row]['test_name'] = $objWorksheet->getCellByColumnAndRow(1, $row)->getValue();
$rows[$row]['test_famili'] = $objWorksheet->getCellByColumnAndRow(2, $row)->getValue();
$rows[$row]['test_phone'] = $objWorksheet->getCellByColumnAndRow(3, $row)->getValue();
$rows[$row]['test_address'] = $objWorksheet->getCellByColumnAndRow(4, $row)->getValue();
$rows[$row]['test_code'] = $objWorksheet->getCellByColumnAndRow(5, $row)->getValue();
$rows[$row]['test_title'] = $objWorksheet->getCellByColumnAndRow(6, $row)->getValue();
}
[/PHPS]
 

پیوست ها

  • 2.png
    2.png
    106.6 کیلوبایت · بازدیدها: 12
  • 1.png
    1.png
    99.7 کیلوبایت · بازدیدها: 12
آخرین ویرایش:

hasanak852

Active Member
با نوت پد باز کن و به صورت utf8 ذخیره کن
شاید درست شه
یا اینکه یه فایل با نوت پد++ بساز با انکودینگ utf8 without BOM
بعد داده هارو کپی کن توی اون پیست کن
 

Maryam.20

Member
مشکلم با ذخیره رکرودها حل شد. ممنونم از راهنماییتون:rose:

اما با یونیکد کاراکترها مشکل دارم.
من توی همه صفحاتم هم از charset=UTF-8" استفاده کردم.
Collation فیلدها هم اولش utf8_unicode_ci بود ولی وقتی خواستم ایمپورت کنم به utf8_persian_ci تغییرش دادم.
الان توی تیبل من یه تعدادی رکورد هست که وقت نمایش توی سایت درست نمایش داده میشن اما توی جدول کاراکترهاشون این شکلیه: نبش کوجه هما پلاک Û±Û²Ûµ جدید
بقیه رو که از اکسل ایمپورت کردم به صورت فارسی توی جدول نمایش داده میشن اما توی سایت همشون به شکل علامت سوالن.
سرچ کردم و به این کدها رسیدم:
[PHPS]


$connection=mysql_connect ("$host", "$username", "$password") or die ('Failed to connect to database');
mysql_query("SET NAMES 'utf8'", $connection);
mysql_query("SET CHARACTER SET 'utf8'", $connection);
mysql_query("SET character_set_connection = 'utf8'", $connection);
mysql_select_db ("$db");

[/PHPS]









از این کدها هم که استفاده میکنم مشکل علامت سوال حل میشه اما کاراکترهایی که اجق وجق بودن (اینا منظورمه: ا Ù¾Ù„Ø§Ú ) همین شکلی یونیکد نشده نمایش داده میشن.

ممنون میشم راهنماییم کنید ♥

 
آخرین ویرایش:

hasanak852

Active Member
این مشکلات انکودینگ برا خیلیها به وجود میاد
به نظر من یه برنامه بنویس که همه داده ها رو توی دو یا سه تا فایل اس کیو ال ذخیره کنه (انکودینگشون یو تی اف هشت باشه)
بعد توی دیتابیس یه جدول جدید با انکودینگ "یو تی اف هشت پرشین سی آی"! بساز و همه داده ها رو ایمپورت کن
 

Maryam.20

Member
ممنونم از پاسختون.

الان سری دوم داده ها یونیکد هست با فرمت CSV و مشکلی هم ندارم باهاشون ولی سری اول که توی سیستم ذخیره شده بودن دارن درد سر درست میکنن. ممنون میشم راهنمایی کنید چطور میتونم از PHPMySQL اکسپورتی بگیرم که یونیکد باشه یا به صورت فارسی کاراکتر بده بهم ( نه از اینا: ¬Ø¯ÛŒØ ) تا دوباره ریستور کنم روی جدول جدید.
 

hasanak852

Active Member
الان توی تیبل من یه تعدادی رکورد هست که وقت نمایش توی سایت درست نمایش داده میشن اما توی جدول کاراکترهاشون این شکلیه: نبش Ú©ÙˆØ
وقتی پی اچ پی داده ها رو "درست" میگیره و نمایش میده، به جای نمایش، توی فایل با انکودینگ utf8 ذخیره کن
قالب فایل رو هم مثل همون فایل CSV درست کن
بعد ایمپورت کن
مفهومه؟
 

Maryam.20

Member
ممنونم از پاسختون.

راه حلو گرفتم اما من توی سینتکس خیلی ضعیفم. :sad:ممنون میشم مرحله ذخیره در فایل رو برام بیشتر توضیح بدید یا مثلا یه نمونه کد کوچیک بهم بدید :)
 

hasun

Member
البته تست نکردم خودم ولی فک کنم با Navicat بشه راحت ایمپوت کرد فایل csv رو به دیتابیس
 
سلام ، نیازی نیست فایل رو تغییر بدین ، برای حل مشکل فارسی و یونیکد و انتقال اطلاعات براحتی میتونید از کلاس phpexcel استفاده کنید . جستجو کنید . موفق باشین .
 

alirezador

New Member
دوست من نرم افزار داره تو اینترنت بگرد زیاد لازم نیست خودت رو عزیت کنی
 

جدیدترین ارسال ها

بالا