Informix: كيفية الحصول على محتويات الجدول وأسماء الأعمدة باستخدام DBAccess؟
سؤال
لنفترض أن لدي:
- قاعدة بيانات Informix تدعى "my_database"
- جدول اسمه "my_table" مع الأعمدة "col_1" و "col_2" و "col_3":
يمكنني استخراج محتويات الجدول عن طريق إنشاء ملف my_table.sql السيناريو مثل:
unload to "my_table.txt"
select * from my_table;
واستدعاء DBAccess من سطر الأوامر:
dbaccess my_database my_table.sql
هذا سوف ينتج my_table.txt ملف مع محتويات مثل:
value_a1|value_a2|value_a3
value_b1|value_b2|value_b3
الآن ، ماذا علي أن أفعل إذا أردت الحصول على أسماء الأعمدة في my_table.txt؟ مثل:
col_1|col_2|col_3
value_a1|value_a2|value_a3
value_b1|value_b2|value_b3
المحلول
لم تضع أي من أدوات Informix القياسية أسماء الأعمدة في الجزء العلوي من الإخراج كما تريد.
البرنامج SQLCMD (وليس Microsoft New New New - The Original ، متاح من أرشيف برامج IIUG) لديه القدرة على القيام بذلك ؛ استخدم ال -H
خيار عناوين الأعمدة (و -T
للحصول على أنواع الأعمدة).
sqlcmd -U -d my_database -t my_table -HT -o my_table.txt
sqlunload -d my_database -t my_table -HT -o my_table.txt
يمكن لـ SQLCMD أيضًا القيام بإخراج CSV إذا كان هذا هو ما تحتاجه (ولكن - الأخطاء - لا ينسيق أسماء الأعمدة أو خطوط أنواع الأعمدة بشكل صحيح).
نصائح أخرى
لماذا لا تستخدم dbschema؟
للحصول على مخطط جدول واحد (بدون معلمة -T ، أظهر جميع قاعدة البيانات)
dbschema -d [DBName] -t [DBTable] > file.sql
للحصول على مخطط لإجراء واحد مخزنة
dbschema -d [DBName] -f [SPName] > file.sql
وجدت حل أسهل. ضع الرؤوس في ملف واحد يقول header.txt
(سوف يحتوي على سطر واحد "col_1|col_2|col_3
") ثم الجمع بين ملف الرأس وتشغيل ملف الإخراج الخاص بك:
cat header.txt my_table.txt > my_table_wth_head.txt