كيفية تصدير/تفريغ جدول MySql إلى ملف نصي يتضمن أسماء الحقول (ويعرف أيضًا باسم الرؤوس أو أسماء الأعمدة)

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

  •  06-07-2019
  •  | 
  •  

سؤال

في مترجم MySql، من السهل جدًا تفريغ الجدول على الشاشة مع أسماء الحقول الخاصة به.

يبدو أنه لا توجد طريقة بسيطة لتصدير جدول إلى ملف خارجي محدد بعلامات جدولة أو ملف CSV مشتمل رؤوس الأعمدة الخاصة به.

أحاول القيام بذلك باستخدام SQL فقط أو سطر أوامر Linux، دون كتابة برنامج بلغة أخرى.

شكرًا لك

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

المحلول

والأنابيب الاستعلام إلى العميل فلكس إخراج قائمة مفصول مع أسماء الأعمدة في السطر الأول

$ echo "select * from surveys limit 5" | mysql -uroot -pGandalf surveys
phone   param1  param2  param3  param4  p0      p1      p2      p3      audio4  code    time
XXXXXXXXX       2008-07-02      11:17:23        XXXXXXXX        SAT     -       -       -       -       -       ERROR   2008-07-02 12:18:32
XXXXXXXXX       2008-07-02      11:22:52        XXXXXXXX        SAT     -       -       -       -       -       COLGADO 2008-07-02 12:04:29
XXXXXXXXX       2008-07-02      11:41:29        XXXXXXXX        SAT     -       -       -       -       -       COLGADO 2008-07-02 12:07:22
XXXXXXXXX       2008-07-02      12:16:19        XXXXXXXX        SAT     1       1       1       9       XXXXXXXXX_4.wav     OK      2008-07-02 16:14:27
XXXXXXXXX       2008-07-02      08:21:25        XXXXXXXX        SAT     1       1       1       1       XXXXXXXXX_4.wav     OK      2008-07-02 12:29:40

نصائح أخرى

وهذا السيناريو القليل ينبغي أن نفعل ذلك:

و- 1. اختيار الجدول وملف الإخراج هنا / هذا يجب أن يكون المدخل الوحيد

select 'mytable' into @tableName;
select 'c://temp/test.csv' into @outputFile;

و- 2. الحصول على أسماء الأعمدة في شكل من شأنها أن تناسب الاستعلام

select group_concat(concat("'",column_name, "'")) into @columnNames from information_schema.columns
where table_name=@tableName;

و- 3. بناء الاستعلام

SET @query = CONCAT(
"select * from
((SELECT ",@columnNames,")
UNION
(SELECT * FROM `",@tableName,"`)) as a
INTO OUTFILE '", @outputFile, "'");

و- 4. تنفيذ الاستعلام

PREPARE stmt FROM @query;
EXECUTE stmt;

ولقد حققت ذلك بهذه الطريقة:

echo "select * from table"| mysql database -B -udbuser -puser_passwd | sed s/\\t/,/g > query_output.csv

والخيار -B من الخلية يفصل بين الأعمدة بواسطة علامات التبويب، والتي يتم تحويلها إلى الفواصل باستخدام الحوار الاقتصادي الاستراتيجي. لاحظ أن رؤوس يتم إنشاؤها للغاية.

ويمكنك القيام بذلك مع mysqldump الأوامر. إلقاء نظرة على الخيارات --tab و--xml.

ولقد خلق الإجراء لأتمتة تصدير محتويات عدد أكبر من الجداول إلى ملف csv باستخدام SELECT ... INTO OUTFILE. يرجى الرجوع إلى ما يلي: إذا كان لديك حاجة لشيء من هذا القبيل

<وأ href = "http://lifeboysays.wordpress.com/2012/06/23/mysql-how-to-export-data-to-csv-with-column-headers/" يختلط = "نوفولو" > http://lifeboysays.wordpress.com/2012/06/23/mysql-how-to-export-data-to-csv-with-column-headers/ .

ويستخدم طريقة وصفها cafe876، ولكن العمل من أجل واحد أو سلسلة كاملة من الجداول، بالإضافة يمكنك تعيين حرف محدد واقتبس لاستخدامها.

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

echo "select user_pass from wp_users"| mysql -uroot -proot wp_database > passwordList.txt
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top