استيراد MySQL في phpmyadmin (CSV) يختنق عند علامات الاقتباس

StackOverflow https://stackoverflow.com/questions/1048169

  •  20-08-2019
  •  | 
  •  

سؤال

أحاول استيراد ملف ملف .csv إلى جدول MySQL عبر phpMyAdmin.

يتم فصل ملف .csv بواسطة أنابيب، ويتم تنسيقه على النحو التالي:

data|d'ata|d'a"ta|dat"a|
data|"da"ta|data|da't'a|
dat'a|data|da"ta"|da'ta|

تحتوي البيانات على اقتباسات.ليس لدي أي سيطرة على التنسيق الذي أتلقى به البيانات - فهي يتم إنشاؤها بواسطة طرف ثالث.

المشكلة تأتي عندما يكون هناك | يليها اقتباس مزدوج.أحصل دائمًا على خطأ "عدد الحقول غير صالح في إدخال CSV على السطر N".

أقوم بتحميل الملف من صفحة الاستيراد، باستخدام Latin1، CSV، منتهيًا بـ |، مفصولاً بـ ".

أود أن فقط تغيير الحرف "مرفق"., ، لكنني مستمر في الحصول على "معلمة غير صالحة لاستيراد ملف CSV:الحقول محاطة ب".لقد قمت بتجربة شخصيات مختلفة دون جدوى.

كيف يمكنني إخبار MySQL بقبول هذا التنسيق في phpMyAdmin؟

يعد إعداد هذه الجداول هو الخطوة الأولى في كتابة برنامج يستخدم ملفات gzipped .csv التي تم تحميلها للحفاظ على كتالوج موقع التجارة الإلكترونية.

هل كانت مفيدة؟

المحلول

لقد كنت أواجه مشكلة مماثلة خلال الساعات العديدة الماضية وحصلت أخيرًا على استيراد للعمل لذا سأشارك الحل الذي توصلت إليه، على الرغم من أنه قد لا يساعد الملصق الأصلي.

نسخة مختصرة:
1.) إذا كان ملف Excel، فاحفظه بتنسيق ODS (جدول بيانات المستند المفتوح).1أ.) إذا كان الملف عبارة عن تنسيق نصي يحتوي على محددات (مثل الملصق الأصلي)، فافتح Excel، وبمجرد الدخول إلى Excel، استخدم File/Open لفتح الملف.هناك ستتمكن من تحديد المحدد المناسب لعرض الملف.تأكد من أن الملف يبدو جيدًا، ثم احفظه بتنسيق ODS (وأغلق الملف).

2.) افتح الملف في OpenOffice Calc (تنزيل مجاني من Oracle/Sun).2 أ.) اضغط على Ctrl-F لفتح مربع الحوار "بحث".انقر فوق "المزيد من الخيارات" وتأكد من عدم تحديد "التحديد الحالي فقط".2ب.) ابحث عن علامات الاقتباس المزدوجة.إذا لم يكن هناك أي شيء في ملفك، فيمكنك تخطي الخطوتين 4 و5.
3.) حفظ باسم -> نص CSV.حدد خيارات لتنسيق UTF-8 (اضغط على "U" 3 مرات للوصول إلى هناك بسرعة) ، حدد "؛" (نصف القولون) كفاصل ، واختر اقتباسات مزدوجة للنص.4.) إذا تم العثور على أي علامات اقتباس مزدوجة في ملفك في الخطوة 2 ب، فتابع، وإلا فما عليك سوى استيراد الملف بتنسيق CSV باستخدام phpMyAdmin (راجع الخطوة 6).يجب أن تعمل.5 أ.) افتح في Word أو أي محرر نصوص آخر حيث يمكنك إجراء بحث -> استبدال الكل.
5 ب.) ابحث عن جميع مثيلات علامات الاقتباس المزدوجة الثلاثة المتتالية من خلال البحث عن """ (إذا وجدت أيًا منها، فقد ترغب أيضًا في البحث عن 4، 5، 6 وما إلى ذلك.متتابعاً حتى تخرج فارغاً).5ج.) استبدل """ بعنصر نائب غير موجود في أي مكان آخر في ملف CSV الخاص بك.لقد استبدلتهم بـ "abcdefg".5 د.) بحث -> استبدل كافة مثيلات "" (علامتي اقتباس مزدوجتين على التوالي) بـ \" (شرطة مائلة للأمام وعلامة اقتباس مزدوجة).5e.) بحث -> استبدل كافة مثيلات abcdefg (أو العنصر النائب الذي اخترته من الخطوة 5ج) بـ \"".5c وهذه الخطوة تضمن أن أي علامات اقتباس تحدث في نهاية الحقل قبل عرض أسعار تحديد النص مباشرة "تم تخطيها" بشكل صحيح.5و.) وأخيرًا، احفظ الملف باستخدام UTF-8 (أو أي تنسيق تحتاجه للاستيراد).6.أ) في phpMyAdmin، انقر فوق علامة التبويب "استيراد"، ثم انقر فوق الزر "اختيار ملف"، ثم حدد الملف الذي قمت بحفظه للتو.6 ب.) ضمن "تنسيق الملف المستورد"، يجب تحديد ملف CSV.إذا كانت أسماء الأعمدة في الصف الأول، فتأكد من تحديد خانة الاختيار.والأهم من ذلك، يجب تعيين "الحقول التي تم إنهاؤها بواسطة" على ؛(فاصلة نقطية)، يجب تعيين "الحقول المحاطة بـ" على "(علامات الاقتباس المزدوجة)، ويجب تعيين "الحقول التي تم تجاوزها بواسطة" على \ (شرطة مائلة للأمام).يمكنك إعداد ذلك في ملفك باتباع الخطوة 3، وإذا لزم الأمر باتباع الخطوات من 5 أ إلى 5 و.

7.) انقر على "اذهب" ودعوك ألا تضيع ساعة أخرى.

والآن بعد أن أصبحت النسخة القصيرة طويلة جدًا، سأتخطى النسخة الطويلة.

يكفي أن نقول، يبدو أن هناك مشكلتين رئيسيتين في الاستيراد من خلال phpmyadmin.1.) هناك مشكلة ما في الذاكرة تمنع ملفات Excel وODS الكبيرة (ما هو حجمها؟لست متأكدا بعد) يجري استيرادها.2.) لا يبدو أن OpenOffice أو Excel يحفظان ملفات CSV الخاصة بهما بطريقة متوافقة مع phpmyadmin.إنهم يريدون الهروب من علامات الاقتباس المزدوجة بعلامات اقتباس مزدوجة.يريد phpMyAdmin حذف علامات الاقتباس المزدوجة بشيء آخر، مثل الشرطة المائلة للأمام.

نأمل أن يتم إصلاح المشكلة الأولى في تحديث phpmyadmin (و/أو الوظيفة الإضافية لاستيراد Excel "PHPExcel").يمكن إصلاح المشكلة الثانية إذا كانت هناك طريقة سهلة لتغيير حرف الهروب لملفات Excel أو ODS المحفوظة بتنسيق CSV، أو إذا كان من الممكن جعل phpMyAdmin متوافقًا مع تنسيقها (ينبغي أن يكون ذلك سهلاً جدًا في الواقع.ما عليك سوى جعله ينفذ نفس إجراءات البحث والاستبدال التي قمنا بها يدويًا أعلاه لتجنب مشكلة الاقتباس المزدوج).

آمل أن يساعد هذا شخصًا ما، حيث قضيت 3-4 ساعات في اكتشاف هذا الحل وساعة أخرى في كتابته هنا.آمل ألا يكون الأمر طويلاً للغاية، لكنني كنت أتمنى مساعدة الأشخاص على جميع مستويات الخبرة من الصفر إلى أي مكان أكون فيه (ربما حوالي 0.1).

نصائح أخرى

لقد وجدت اختراقًا ناجحًا - أستخدم $ باعتباره الحرف "مُحاط بـ" وكل شيء على ما يرام.نظرًا لأن هذا موقع أوروبي، أعلم أنهم لن يستخدموه أبدًا في محتوى الجدول.

يمكنك تعديل ملفات CSV عن طريق إضافة \ أمام كل كلمة ' أليس كذلك؟

هل حاولت إفراغ المربعات التي تقول "الحقول المحاطة بـ" و"الحقول التي تم تجاوزها"؟لم أستخدم phpMyAdmin، لكن جوجل تقترح ذلك وقد نجح آخرون في هذه الطريقة.

قد تفكر في كتابة ما يخصك فقط تحميل ملف البيانات الاستعلام، يبدو أنك ستحتاج إلى واحد على أي حال لأن هذه العملية ستكون جزءًا من التطبيق في مرحلة ما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top