Informix: كيفية الحصول على محتويات الجدول وأسماء الأعمدة باستخدام DBAccess؟

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

  •  26-09-2019
  •  | 
  •  

سؤال

لنفترض أن لدي:

  • قاعدة بيانات 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top