ما SQL يمكن استخدامها لسرد الجداول ، والصفوف داخل تلك الجداول في ملف قاعدة بيانات SQLite - بمجرد إرفاقه بالأمر ATTACH
في أداة سطر الأوامر SQLite 3؟
لا تبحث دالات .tables
و .schema
"المساعد" في قواعد بيانات ATTACHed: فهي تقوم فقط بالاستعلام عن جدول SQLITE_MASTER
لقاعدة البيانات "الرئيسية". وبالتالي ، إذا كنت تستخدم
ATTACH some_file.db AS my_db;
ثم عليك أن تفعل
SELECT name FROM my_db.sqlite_master WHERE type='table';
لاحظ أن الجداول المؤقتة لا تظهر مع .tables
إما: عليك أن تسرد sqlite_temp_master
لذلك:
SELECT name FROM sqlite_temp_master WHERE type='table';
هناك بضع خطوات لرؤية الجداول في قاعدة بيانات SQLite:
قائمة الجداول في قاعدة البيانات الخاصة بك:
.tables
اذكر كيف يبدو الجدول:
.schema tablename
طباعة الجدول بأكمله:
SELECT * FROM tablename;
قائمة بكافة أوامر SQLite Prompt المتاحة:
.help
يبدو أنك بحاجة إلى الاطلاع على sqlite_master الجدول ، مثل هذا:
SELECT * FROM dbname.sqlite_master WHERE type='table';
ثم انتقل يدويًا من خلال كل جدول باستخدام SELECT
أو مشابه لإلقاء نظرة على الصفوف.
لا يبدو أن الأمرين .DUMP
و .SCHEMA
يشاهدان قاعدة البيانات على الإطلاق.
لإظهار جميع الجداول ، استخدم
SELECT name FROM sqlite_master WHERE type = "table"
لإظهار كل الصفوف ، أعتقد أنه يمكنك تكرار كل الجداول وفعل SELECT * على كل واحد. ولكن ربما تفريغ ما كنت بعد؟
استخدم .help
للتحقق من الأوامر المتاحة.
.table
سيُظهر هذا الأمر جميع الجداول ضمن قاعدة البيانات الحالية.
يوجد أمر متاح لهذا في سطر أوامر SQLite:
.tables ?PATTERN? List names of tables matching a LIKE pattern
الذي يحول إلى SQL التالية:
SELECT name FROM sqlite_master
WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
WHERE type IN ('table','view')
ORDER BY 1
لسرد الجداول ، يمكنك أيضًا:
SELECT name FROM sqlite_master
WHERE type='table';
جرب PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema
أستخدم هذا الاستعلام للحصول عليه:
SELECT name FROM sqlite_master WHERE type='table'
وللاستخدام في نظام iOS:
NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
وفقًا لـ documentation ، فإن ما يعادل MySQLs 'SHOW TABLES;
هو:
يشبه الأمر ".tables" إعداد وضع القائمة ثم تنفيذ الاستعلام التالي:
SELECT name FROM sqlite_master
WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%'
UNION ALL
SELECT name FROM sqlite_temp_master
WHERE type IN ('table','view')
ORDER BY 1;
ومع ذلك ، إذا كنت تتحقق من وجود جدول واحد (أو للحصول على تفاصيله) ، فراجع LuizGeron answer.
اعتبارًا من أحدث إصدارات SQLite 3 ، يمكنك إصدار:
.fullschema
لرؤية كل من إنشاء البيانات الخاصة بك.
أسهل طريقة للقيام بذلك هي فتح قاعدة البيانات مباشرةً واستخدام الأمر .dump
، بدلاً من إرفاقها بعد استدعاء أداة SQLite 3 Shell.
لذا ... (افترض أن سطر أوامر نظام التشغيل الخاص بك هو $) بدلاً من $sqlite3
:
sqlite3> ATTACH database.sqlite as "attached"
من سطر أوامر نظام التشغيل ، افتح قاعدة البيانات مباشرة:
$sqlite3 database.sqlite
sqlite3> .dump
عبر union all
، ادمج جميع الجداول في قائمة واحدة.
select name
from sqlite_master
where type='table'
union all
select name
from sqlite_temp_master
where type='table'
استعمال:
import sqlite3
TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
نظرًا لعدم ذكر أي شخص حول المرجع الرسمي لـ SQLite ، أعتقد أنه قد يكون من المفيد الإشارة إليه تحت هذا العنوان:
https://www.sqlite.org/cli.html
يمكنك معالجة قاعدة البيانات الخاصة بك باستخدام الأوامر الموضحة في هذا الرابط. إلى جانب ، إذا كنت تستخدم نظام التشغيل Windows ولا تعرف أين يقع الأمر Shell ، فذلك موجود في موقع SQLite:
https://www.sqlite.org/download.html
بعد تنزيله ، انقر فوق ملف sqlite3.exe لتهيئة أمر SQLite Shell . عند التهيئة ، تستخدم جلسة عمل SQLite هذه افتراضيًا قاعدة بيانات في الذاكرة ، وليس ملفًا على القرص ، وبالتالي سيتم فقد جميع التغييرات عند إنهاء الجلسة. لاستخدام ملف قرص ثابت كقاعدة بيانات ، أدخل الأمر ".open ex1.db" مباشرة بعد بدء تشغيل نافذة الجهاز الطرفي.
المثال أعلاه يؤدي إلى فتح ملف قاعدة البيانات المسمى "ex1.db" واستخدامه وإنشائه إذا لم يكن موجودًا من قبل. قد ترغب في استخدام اسم مسار كامل لضمان وجود الملف في الدليل الذي تعتقد أنه موجود فيه. استخدم شرطة مائلة للأمام كحرف فاصل الدليل. بمعنى آخر ، استخدم "c: /work/ex1.db" ، وليس "c:\work\ex1.db".
لرؤية جميع الجداول في قاعدة البيانات التي اخترتها من قبل ، اكتب الأمر .tables كما يقال في الرابط أعلاه.
إذا كنت تعمل في نظام Windows ، أعتقد أنه قد يكون من المفيد نقل ملف sqlite.exe هذا إلى نفس المجلد مع ملفات Python الأخرى. بهذه الطريقة ، يكتب ملف Python وقراءات SQLite Shell من ملفات .db في نفس المسار.
يسرد الكوماندوز ".schema" الجداول المتاحة والصفوف الخاصة بهم ، من خلال إظهار العبارة المستخدمة لإنشاء الجداول المذكورة:
sqlite> إنشاء table_a (id int ، int ، b int) ؛ sqlite> .schema table_a CREATE TABLE table_a (id int ، int ، b int) ؛
.da لرؤية جميع قواعد البيانات - واحدة تسمى ' main '
يمكن رؤية جداول قاعدة البيانات هذه بواسطة
حدد tbl_name متميزًا من ترتيب sqlite_master بمقدار 1 ؛
تحتاج قواعد البيانات المرفقة إلى بادئات اخترتها بـ AS في العبارة ATTACH ، على سبيل المثال aa (، bb، cc ...) لذلك:
SELECT متميز tbl_name من aa.sqlite_master order by 1؛
لاحظ أنه هنا يمكنك الحصول على وجهات النظر كذلك. لاستبعاد هذه الإضافة حيث type = 'table' قبل 'order'