it-swarm.asia

كيفية سرد الجداول في ملف قاعدة بيانات SQLite الذي تم فتحه مع ATTACH؟

ما SQL يمكن استخدامها لسرد الجداول ، والصفوف داخل تلك الجداول في ملف قاعدة بيانات SQLite - بمجرد إرفاقه بالأمر ATTACH في أداة سطر الأوامر SQLite 3؟

1113
izb

لا تبحث دالات .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';
524
Anthony Williams

هناك بضع خطوات لرؤية الجداول في قاعدة بيانات SQLite:

  1. قائمة الجداول في قاعدة البيانات الخاصة بك:

    .tables
    
  2. اذكر كيف يبدو الجدول:

    .schema tablename
    
  3. طباعة الجدول بأكمله:

    SELECT * FROM tablename;
    
  4. قائمة بكافة أوامر SQLite Prompt المتاحة:

    .help
    
1233
Mark Janssen

يبدو أنك بحاجة إلى الاطلاع على sqlite_master الجدول ، مثل هذا:

SELECT * FROM dbname.sqlite_master WHERE type='table';

ثم انتقل يدويًا من خلال كل جدول باستخدام SELECT أو مشابه لإلقاء نظرة على الصفوف.

لا يبدو أن الأمرين .DUMP و .SCHEMA يشاهدان قاعدة البيانات على الإطلاق.

433
Lasse Vågsæther Karlsen

لإظهار جميع الجداول ، استخدم

SELECT name FROM sqlite_master WHERE type = "table"

لإظهار كل الصفوف ، أعتقد أنه يمكنك تكرار كل الجداول وفعل SELECT * على كل واحد. ولكن ربما تفريغ ما كنت بعد؟

153
Christian Davén

استخدم .help للتحقق من الأوامر المتاحة.

.table

سيُظهر هذا الأمر جميع الجداول ضمن قاعدة البيانات الحالية.

68
Antony.H

يوجد أمر متاح لهذا في سطر أوامر 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
40
flubba

لسرد الجداول ، يمكنك أيضًا:

SELECT name FROM sqlite_master
WHERE type='table';
36
Rafał Dowgird

جرب PRAGMA table_info(table-name);
http://www.sqlite.org/pragma.html#schema

29
Luiz Geron

أستخدم هذا الاستعلام للحصول عليه:

SELECT name FROM sqlite_master WHERE type='table'

وللاستخدام في نظام iOS:

NSString *aStrQuery=[NSString stringWithFormat:@"SELECT name FROM sqlite_master WHERE type='table'"];
19
GameLoading

وفقًا لـ 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.

15
Alix Axel

اعتبارًا من أحدث إصدارات SQLite 3 ، يمكنك إصدار:

.fullschema

لرؤية كل من إنشاء البيانات الخاصة بك.

15
pepper

أسهل طريقة للقيام بذلك هي فتح قاعدة البيانات مباشرةً واستخدام الأمر .dump ، بدلاً من إرفاقها بعد استدعاء أداة SQLite 3 Shell.

لذا ... (افترض أن سطر أوامر نظام التشغيل الخاص بك هو $) بدلاً من $sqlite3:

sqlite3> ATTACH database.sqlite as "attached"

من سطر أوامر نظام التشغيل ، افتح قاعدة البيانات مباشرة:

$sqlite3 database.sqlite
sqlite3> .dump
11
Noah

عبر union all ، ادمج جميع الجداول في قائمة واحدة.

select name
from sqlite_master 
where type='table'

union all 

select name 
from sqlite_temp_master 
where type='table'
9
openwonk

استعمال:

import sqlite3

TABLE_LIST_QUERY = "SELECT * FROM sqlite_master where type='table'"
9
Mrityunjay Singh

نظرًا لعدم ذكر أي شخص حول المرجع الرسمي لـ 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 في نفس المسار.

7
oiyio

يسرد الكوماندوز ".schema" الجداول المتاحة والصفوف الخاصة بهم ، من خلال إظهار العبارة المستخدمة لإنشاء الجداول المذكورة:

 sqlite> إنشاء table_a (id int ، int ، b int) ؛ 
 sqlite> .schema table_a 
 CREATE TABLE table_a (id int ، int ، b int) ؛ 
5
trf

.da لرؤية جميع قواعد البيانات - واحدة تسمى ' main '

يمكن رؤية جداول قاعدة البيانات هذه بواسطة

حدد tbl_name متميزًا من ترتيب sqlite_master بمقدار 1 ؛

تحتاج قواعد البيانات المرفقة إلى بادئات اخترتها بـ AS في العبارة ATTACH ، على سبيل المثال aa (، bb، cc ...) لذلك:

SELECT متميز tbl_name من aa.sqlite_master order by 1؛

لاحظ أنه هنا يمكنك الحصول على وجهات النظر كذلك. لاستبعاد هذه الإضافة حيث type = 'table' قبل 'order'

1
Klaas-Z4us-V