كيفية تصدير/تفريغ جدول MySql إلى ملف نصي يتضمن أسماء الحقول (ويعرف أيضًا باسم الرؤوس أو أسماء الأعمدة)
سؤال
في مترجم 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