স্ক্লাইট শেল আউটপুট সঠিকভাবে ফর্ম্যাট করবেন কীভাবে?


77

আমি যদি গিয়ে mysql shellটাইপ SELECT * FROM usersকরি তবে আমি পাই -

+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
| USERID | NAME           | EMAILID                         | PASSWORD | USER_TYPE | CONTACT_ID_FKUSERS | COMPANY_ID_FKUSERS |
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+
|    137 | X              | b@cc.com                        | #        | ADMIN     |                166 |                110 |
|    138 | Kshitiz        | ksharma@aaa.com                 | asdf     | ADMIN     |                167 |                111 |
+--------+----------------+---------------------------------+----------+-----------+--------------------+--------------------+

Oracle sqlplus শো -

USERID     NAME  EMAILID    PASSWORD   USER_TYPE  CONTACT_ID_FKUSERS COMPANY_ID_FKUSERS
---------- ----- ---------- ---------- ---------- ------------------ ------------------
137        X     b@cc.com   #          ADMIN                     166                110
137        X     b@cc.com   #          ADMIN                     166                110

Sqlite shell শো -

137|X|b@cc.com|#|ADMIN|166|110
138|Kshitiz|ksharma@aaa.com|asdf|ADMIN|167|111
  1. এখান থেকে আউটপুট সুন্দরী করার কোন উপায় আছে কি sqlite shell?
  2. ডিফল্ট বিতরণের চেয়ে ভাল এমন কোনও বিকল্প শেল আছে কি? (কেবল সিএলআই ক্লায়েন্ট)

সত্যিই কাস্টম আউটপুট ফরম্যাট: stackoverflow.com/questions/23120906/...
সিরো Santilli新疆改造中心法轮功六四事件

উত্তর:


111

"মানব পাঠযোগ্য" আউটপুটের জন্য, আপনি columnমোড ব্যবহার করতে পারেন এবং শিরোনাম আউটপুট চালু করতে পারেন । এটি sqlplusআপনার উদাহরণগুলিতে আউটপুটের অনুরূপ কিছু পাবেন :

sqlite> select * from foo;
234|kshitiz|dba.se
sqlite> .mode column
sqlite> select * from foo;
234         kshitiz     dba.se
sqlite> .headers on
sqlite> select * from foo;
bar         baz         baf
----------  ----------  ----------
234         kshitiz     dba.se

সুন্দর ধন্যবাদ! সামগ্রীটি (অনুভূমিকভাবে) খাপ খায়নি, এবং কোনও অন্তর্নির্মিত পেজার বলে মনে হচ্ছে না, তাই আমাকে echo -e '.mode column\n.headers on\nselect * from sip_foo;\n' | sqlite3 database.sqlite | less -Sশব্দ-মোড়ানো ছাড়াই প্রতি লাইনে একটি সারি পেতে ব্যবহার করতে হয়েছিল।
রব ডব্লু

5
নোট, তবে, .widthআপনার কলামগুলি আরও প্রশস্ত করতে আপনার কমান্ডটি ব্যবহার করতে হতে পারে । অন্যথায় আপনার সামগ্রী চাক্ষুষভাবে কাটা হবে।
mlissner

আপনি যোগ করতেও পারেন .separator ROW "\n", যাতে সারিগুলি লাইন ব্রেক দ্বারা পৃথক করা হয়। খনি ছিল না, এবং আউটপুটটি অপঠনযোগ্য ছিল।
বাক্সুয়ান

3
আপনি ~/.sqlitercযদি প্রতিবার ম্যানুয়ালি এটি না করতে চান তবে আপনি এটি আপনার ফাইলে যুক্ত করতে পারেন।
আইজোসেফ

9

কমান্ড লাইন থেকে স্ক্লাইট চালানো বাদে যারা একই ফলাফল পেতে আগ্রহী তাদের জন্য। আমি দেখেছি যে নিম্নলিখিতগুলি কাজ করে না:

$ sqlite3 <dbfile> ".headers on;.mode column;select * from MyTable"
Error: mode should be one of: ascii column csv html insert line list tabs tcl

পরিবর্তে, আপনাকে নিম্নোক্তভাবে স্ক্লাইট কমান্ড সহ কলাম এবং হেডার বিকল্পগুলি ব্যবহার করতে হবে:

$ sqlite3 -column -header <dbfile> "select * from MyTable"

ব্যবহার:

$ sqlite3 --version 3.8.11.1 2015-07-29 20:00:57 cf538e2783e468bbc25e7cb2a9ee64d3e0e80b2f

1
যদিও কলামগুলির প্রস্থ সেট করার কোনও বিকল্প নেই তবে নীচের কাজগুলি সম্ভব: echo -e ".headers on \n.mode column \n.width 10 20 500 \n select * from MyTable" | sqlite3 <dbfile>- অর্থাত্, স্ট্যান্ডিনে আদেশগুলি প্রেরণ করুন।
রুভিম

আমি মনে করি আপনার ত্রুটিটি ".headers on\n.mode column\nইত্যাদির পরিবর্তে সেমিকোলন ব্যবহার করছিল
deed02392

9

উত্তরগুলির সমস্ত সেটিংস সরবরাহ করে যা আপনি এসকিউএলটি কনসোলে বা সি এল এলির মাধ্যমে টাইপ করতে পারেন, তবে কেউই উল্লেখ করেন না যে এই সেটিংসটি সমস্ত সময় টাইপ না করে এ জন্য কোনও আরসি ফাইলের মধ্যে রাখা যেতে পারে। এটি সংরক্ষণ করুন ~/.sqliterc:

.mode column
.headers on
.separator ROW "\n"
.nullvalue NULL

দ্রষ্টব্য আমি ডিফল্ট খালি স্ট্রিংয়ের পরিবর্তে নাল মানগুলির জন্য একটি স্থানধারক যুক্ত করেছি।


2

আমি সবসময় ব্যবহার করি

.mode line

যা মাইএসকিউএল এর \Gসংশোধক হিসাবে অনুরূপ ক্যোয়ারী ফলাফলগুলি উল্লম্বভাবে মুদ্রণ করে ।


1

যেমন আমি এখনও মন্তব্য করতে পারি না ... ইতিমধ্যে মাদুর এবং মিলিস্নারের দ্বারা সরবরাহ করা দুর্দান্ত উত্তরের সাথে সাথে যদি কোনও ক্ষেত্রে স্ক্লাইট শেলটিতে সঠিক বিন্যাস দেওয়ার পরে কোনও কলামের বিষয়বস্তু কেটে ফেলা হয় (ব্যবহার করা হয়েছে .mode columnএবং .headers onউপরে বর্ণিত হিসাবে ), ব্যবহার করারও সম্ভাবনা রয়েছে .explainতাই কোনও কলামের সম্পূর্ণ সামগ্রী প্রদর্শিত হবে।

এই কমান্ডের একমাত্র নেতিবাচক দিকটি হ'ল কলামের শিরোনামগুলি সঙ্কুচিত হয়, সুতরাং সেগুলি সঠিকভাবে না পড়া এবং আউটপুটটি যথেষ্ট অগোছালো হতে পারে (একটি ভিজ্যুয়াল .explain offদৃশ্যে ), তারপরে আপনি পূর্ববর্তী ফর্ম্যাটে ফিরে এসে আরও "মানবের সাথে দেখতে" ব্যবহার করতে পারেন আরও একবার পঠনযোগ্য "ফর্ম্যাট।

এই পদ্ধতির আউটপুট বিন্যাসের কমান্ডগুলির সাথে একত্রে এবং কোনও ডাটাবেস / কলামের সম্পূর্ণ ডেটা দেখার সাময়িক সমাধান হিসাবে ব্যবহার করা যেতে পারে, যেমন আপনার ব্যবহারের সাথে .widthসর্বদা সম্পূর্ণ আউটপুট পাওয়ার জন্য অক্ষরের নির্দিষ্ট সংখ্যা দিতে হবে একটি কলামের ডেটা।

আউটপুট ফর্ম্যাটগুলি পরিবর্তন করতে আরও তথ্যের জন্য, ডিফল্ট সিএলআই ডকুমেন্টেশনের একটি দ্রুত রেফারেন্স:

https://www.sqlite.org/cli.html


1

আমার কোনও লাইন ব্রেক ছাড়াই গোলযোগের মতো লাগছিল। @ বাক্সুয়ান মন্তব্য

আপনি .separator ROW "\ n" যুক্ত করতে চান, যাতে সারিগুলি লাইন ব্রেক দ্বারা পৃথক করা যায়। খনি ছিল না, এবং আউটপুটটি অপঠনযোগ্য ছিল। - বক্সুয়ান 11 ই মে 15:08 এ

এটির সাথে আমার সমস্যাটিও ঠিক করে ফেলুনএখানে চিত্র বর্ণনা লিখুন


1
আপনি কোন সিস্টেমটি ব্যবহার করছেন? ম্যাকোএসে এ জাতীয় কোনও সমস্যা নেই
ospider

1

আপনি .mode tabsসুবিধার জন্য ব্যবহার করতে পারেন ।

sqlite> select * from user;
name    age
Bob     18
Ali     19
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.