Saya ingin memigrasikan aplikasi iPhone saya ke versi database baru. Karena saya tidak menyimpan beberapa versi, saya perlu memeriksa apakah ada nama kolom tertentu.
Entri Stackoverflow ini menyarankan untuk melakukan pemilihan
SELECT sql FROM sqlite_master
WHERE tbl_name = 'table_name' AND type = 'table'
dan parsing hasilnya.
Apakah itu cara yang biasa? Alternatif?
SQLite.swift
, lihat pertanyaan dan jawaban ini untuk daftar nama kolom yang sederhana atau yang ini untuk masalah migrasi.Jawaban:
akan memberi Anda daftar semua nama kolom.
sumber
create temporary table TmpCols (cid integer, name text, type text, nn bit, dflt_value, pk bit); .mode insert TmpCols .output cols PRAGMA TABLE_INFO('yourtable'); .read cols .mode csv .output stdout
db.rawQuery("PRAGMA table_info(" + tablename + ")", null);
Jika Anda memiliki database sqlite, gunakan program baris perintah sqlite3 dan perintah ini:
Untuk membuat daftar semua tabel dalam database:
Untuk menampilkan skema untuk yang diberikan
tablename
:sumber
PRAGMA table_info(table_name);
Jika kamu melakukan
Anda akan mendapatkan hasil yang diinginkan.
sumber
.sqliterc
.PRAGMA
metode dan.schema
metode keduanya tidak bekerja untuk saya. Tapi yang ini berfungsi dengan baik.Hanya untuk noobs super seperti saya bertanya-tanya bagaimana atau apa yang dimaksud orang
Anda ingin menggunakannya sebagai pernyataan persiapan seperti yang ditunjukkan di bawah ini. Melakukannya memilih tabel yang terlihat seperti ini kecuali diisi dengan nilai yang berkaitan dengan tabel Anda.
Di mana id dan nama adalah nama sebenarnya dari kolom Anda. Jadi untuk mendapatkan nilai itu, Anda perlu memilih nama kolom dengan menggunakan:
Yang akan mengembalikan nama kolom baris saat ini. Untuk mengambil semuanya atau menemukan yang Anda inginkan, Anda harus mengulangi semua baris. Cara paling sederhana untuk melakukannya adalah dengan cara di bawah ini.
sumber
Jika Anda ingin output dari kueri Anda menyertakan nama kolom dan disejajarkan dengan benar sebagai kolom, gunakan perintah ini di
sqlite3
:Anda akan mendapatkan output seperti:
sumber
Untuk mendapatkan daftar kolom, Anda cukup menggunakan:
sumber
Cara alternatif untuk mendapatkan daftar nama kolom yang tidak disebutkan di sini adalah memilih dari fungsi pragma:
Anda dapat memeriksa apakah ada kolom tertentu dengan menjalankan:
Ini adalah apa yang Anda gunakan jika Anda tidak ingin melewatkan hasil dari memilih sql dari sqlite_master atau pragma table_info.
Referensi:
https://www.sqlite.org/pragma.html#pragfunc
sumber
Saat Anda menjalankan
sqlite3
cli, ketikkan:juga akan memberikan hasil yang diinginkan
sumber
Anda dapat menggunakan pernyataan Suka jika Anda mencari kolom tertentu
ex:
sumber
Saya tahu ini adalah utas lama, tetapi baru-baru ini saya membutuhkan yang sama dan menemukan cara yang rapi:
sumber
where t.name = 'table';
Untuk mendapatkan informasi kolom, Anda dapat menggunakan cuplikan berikut:
sumber
sumber
.schema di konsol sqlite ketika Anda memiliki Anda di dalam tabel itu terlihat seperti ini untuk saya ...
sumber
sumber
sumber
Saya tahu sudah terlambat tetapi ini akan membantu lainnya.
Untuk menemukan nama kolom dari tabel, Anda harus menjalankan
select * from tbl_name
dan Anda akan mendapatkan hasilnyasqlite3_stmt *
. dan periksa kolom iterate di atas total kolom yang diambil. Silakan merujuk kode berikut untuk hal yang sama.Ini akan mencetak semua nama kolom dari set hasil.
sumber
.schema table_name
Ini akan mencantumkan nama kolom dari tabel dari database.
Semoga ini bisa membantu !!!
sumber
Mungkin Anda hanya ingin mencetak header tabel di konsol. Ini adalah kode saya: (untuk setiap tabel)
sumber