Apa metode terbaik untuk menyalin data dari tabel di satu database ke tabel di database lain ketika database berada di bawah pengguna yang berbeda?
Saya tahu saya bisa menggunakannya
INSERT INTO database2.table2 SELECT * from database1.table1
Tapi di sini masalahnya adalah keduanya database1
dan database2
berada di bawah pengguna MySQL yang berbeda. Jadi user1
dapat mengakses database1
saja dan user2
dapat mengakses database2
saja. Ada ide?
Jawaban:
Jika Anda memiliki akses shell, Anda dapat menggunakannya
mysqldump
untuk membuang kontendatabase1.table1
dan mengirimkannyamysql
kedatabase2
. Masalahnya di sinitable1
adalah masihtable1
.Mungkin Anda perlu mengganti nama
table1
menjaditable2
dengan permintaan lain. Di sisi lain Anda mungkin menggunakan sed untuk mengubah table1 ke table2 antara ke pipa.Jika table2 sudah ada, Anda bisa menambahkan parameter ke mysqldump pertama yang jangan biarkan buat tabel-create.
sumber
CREATE TABLE db1.table1 SELECT * FROM db2.table1
di mana db1 adalah tujuannya dan db2 adalah sumbernya
sumber
ALTER TABLE db1.table1 ADD PRIMARY KEY (id); ALTER TABLE db1.table1 MODIFY COLUMN id INT AUTO_INCREMENT;
Jika Anda menggunakan PHPMyAdmin, itu bisa sangat sederhana. Misalkan Anda memiliki database berikut:
DB1 memiliki tabel pengguna yang ingin Anda salin ke DB2
Di bawah PHPMyAdmin, buka DB1, lalu buka tabel pengguna.
Pada halaman ini, klik pada tab "Operasi" di kanan atas. Di bawah Operasi, cari bagian Salin tabel ke (database.table):
& kamu selesai!
sumber
Meja Kerja MySql : Sangat Dianjurkan
Ini akan dengan mudah menangani masalah migrasi. Anda dapat memigrasi tabel-tabel tertentu dari database yang dipilih antara MySql dan SqlServer. Anda harus mencobanya pasti.
sumber
mysql Workbench
migrasi keSQLYog
salinan basis data? Dari tampilan cepat saya tampaknya mereka sangat mirip, tetapi meja kerja mysql adalah fitur yang lebih baruSaya menggunakan Navicat untuk MySQL ...
Itu membuat semua manipulasi basis data mudah!
Anda cukup memilih kedua database di Navicat dan kemudian gunakan.
sumber
Saya tahu ini adalah pertanyaan lama, hanya menjawab agar siapa pun yang mendarat di sini mendapat pendekatan yang lebih baik.
Pada 5.6.10 yang dapat Anda lakukan
Lihat dokumentasi di sini: https://dev.mysql.com/doc/refman/5.7/en/create-table-like.html
sumber
Jika tabel Anda berada di server mysql yang sama, Anda dapat menjalankan yang berikut ini
sumber
Gunakan fungsionalitas Ekspor dan Impor MySql Workbench. Langkah-langkah:
1. Pilih nilai yang Anda inginkan
buat tabel baru menggunakan kolom yang sama seperti yang pertama
pilih semua dari tabel baru
Klik Impor dan pilih file CSV yang Anda ekspor di langkah 2
sumber
Berikut ini cara mudah lainnya:
INSERT INTO DB2.TB1 SELECT * from DB1.TB1;
sumber
Coba
mysqldbcopy
( dokumentasi )Atau Anda dapat membuat " tabel gabungan " pada host target Anda. Tabel Federasi memungkinkan Anda untuk melihat tabel dari server database yang berbeda seolah-olah itu adalah tabel lokal. ( dokumentasi )
Setelah membuat tabel gabungan, Anda dapat menyalin data dengan yang biasa
insert into TARGET select * from SOURCE
sumber
Dengan MySQL Workbench Anda dapat menggunakan Ekspor Data untuk membuang hanya tabel ke file SQL lokal (Hanya Data, Hanya Struktur atau Struktur dan Data) dan kemudian Impor Data untuk memuatnya ke DB lain.
Anda dapat memiliki banyak koneksi (host yang berbeda, database, pengguna) terbuka secara bersamaan.
sumber
Salah satu cara sederhana untuk mendapatkan semua pertanyaan yang Anda butuhkan adalah menggunakan data dari information_schema dan concat.
Anda kemudian akan mendapatkan daftar hasil yang terlihat seperti ini:
Anda kemudian dapat menjalankan kueri tersebut.
Namun itu tidak akan berfungsi dengan Tampilan MySQL. Anda dapat menghindarinya dengan menambahkan
AND TABLE_TYPE = 'BASE TABLE'
dari permintaan awal:sumber
Apakah ini sesuatu yang perlu Anda lakukan secara teratur, atau hanya satu?
Anda dapat melakukan ekspor (misalnya menggunakan phpMyAdmin atau serupa) yang akan skrip tabel Anda dan isinya ke file teks, maka Anda bisa mengimpor kembali itu ke dalam Database lain.
sumber
gunakan langkah-langkah di bawah ini untuk menyalin dan menyisipkan beberapa kolom dari satu tabel database ke tabel database lain-
2.MASUKKAN KE db2.tablename SELECT columnname1, columnname2 DARI db1.tablename;
sumber
Pertama buat dump. Menambahkan
--no-create-info --no-create-db
bendera jikatable2
sudah ada:Lalu masukkan
user1
kata sandi. Kemudian:Lalu masukkan
user2
kata sandi.Sama seperti @helmors yang menjawab tetapi pendekatannya lebih aman karena kata sandi tidak diekspos dalam teks mentah ke konsol (reverse-i-search, password sniffers, dll). Pendekatan lain baik-baik saja jika dijalankan dari file skrip dengan pembatasan yang sesuai ditempatkan pada izin itu.
sumber
DI xampp cukup ekspor tabel yang diperlukan sebagai file .sql dan kemudian impor ke yang diperlukan
sumber
buat tabel destination_customer seperti sakila.customer (Database_name.tablename), ini hanya akan menyalin struktur tabel sumber, untuk data juga untuk disalin dengan struktur lakukan ini buat table destination_customer sebagai pilih * dari sakila.customer
sumber
CREATE TABLE LIKE
dalam pertanyaan, jadi mengapa menyebutkan bahwa itu salah? Dan tidak ada penjelasan tentang bagaimana jawaban ini memecahkan masalah bahwa tidak ada pengguna yang memiliki akses ke tabel yang lain.