Saya memiliki 2 database SQLite dengan data umum tetapi dengan tujuan berbeda dan saya ingin menghindari memasukkan kembali data, jadi saya bertanya-tanya apakah mungkin untuk menyalin seluruh tabel dari satu database ke yang lain?
141
Perhatikan contoh di mana saya memiliki dua database yaitu allmsa.db dan atlanta.db. Katakanlah database allmsa.db memiliki tabel untuk semua msas di AS dan database atlanta.db kosong.
Target kami adalah menyalin tabel atlanta dari allmsa.db ke atlanta.db.
Langkah
ATTACH '/mnt/fastaccessDS/core/csv/allmsa.db' AS AM;
catatan perintah yang kami berikan seluruh path dari database untuk dilampirkan.sqlite> .databases
Anda dapat melihat output sebagaiINSERT INTO atlanta SELECT * FROM AM.atlanta;
Ini harus memenuhi tujuan Anda.
sumber
Cara termudah dan benar dalam satu baris:
Kunci utama dan jenis kolom akan disimpan.
sumber
.dump
menciptakan perintahCREATE TABLE IF NOT EXISTS ...
, dan tidak ada kesalahan meskipun tabel tujuan saya ada.Untuk tindakan satu kali, Anda dapat menggunakan .dump dan .read.
Buang tabel my_table dari old_db.sqlite
Baca dump ke new_db.sqlite dengan asumsi tabel di sana tidak ada
Sekarang Anda telah mengkloning meja Anda. Untuk melakukan ini untuk seluruh database, cukup tinggalkan nama tabel di perintah .dump.
Bonus: Basis data dapat memiliki penyandian yang berbeda.
sumber
Kode objektif-C untuk menyalin Tabel dari Database ke Database lain
sumber
Saya perlu memindahkan data dari database sql server ke sqlite, jadi dengan menggunakan sql server 2008 Anda dapat mengklik kanan pada tabel dan memilih 'Script Table To' dan kemudian 'Data to Inserts'. Salin pernyataan yang disisipkan menghapus pernyataan 'GO' dan berhasil dieksekusi ketika diterapkan ke database sqlite menggunakan aplikasi 'DB Browser for Sqlite'.
sumber
Skenario pertama: DB1.sqlite dan DB2.sqlite memiliki tabel yang sama (t1), tetapi DB1 lebih "up to date" daripada DB2. Jika kecil, letakkan tabel dari DB2 dan buat kembali dengan data:
Skenario kedua: Jika tabel besar, Anda mungkin lebih baik dengan
INSERT if not exists
solusi tipe. Jika Anda memilikiUnique Key
kolom itu lebih lurus ke depan, jika tidak, Anda harus menggunakan kombinasi bidang (mungkin setiap bidang) dan pada titik tertentu itu masih lebih cepat untuk hanyadrop
dan kembalicreate
tabel; selalu lebih lurus ke depan (lebih sedikit pemikiran diperlukan).PENGATURAN: buka SQLite tanpa DB yang membuat basis data
temporary
di memorimain
, laluattach
DB1.sqlite dan DB2.sqlitedan gunakan
.databases
untuk melihat database terlampir dan file-file mereka.sumber
UNIQUE
danPRIMARY KEY
atribut, jadi jika Anda memilikinya, Anda harusDROP TABLE
dan secara manualCREATE
danINSERT
atau menggunakan metode.dump
dan.read
yang disebutkan di atas oleh @Thinkeye.