Rumah  >  Soal Jawab  >  teks badan

Pindahkan data dari satu pangkalan data ke pangkalan data yang lain

<p>Saya perlu memindahkan data dari satu pangkalan data ke pangkalan data yang lain, kedua-duanya pada sistem setempat yang sama. </p> <p>Nama jadual dan lajur adalah berbeza dan saya tidak perlu memindahkan semua lajur daripada pangkalan data lama, jadi </p> <p><kod>Pilih *</kod> </p> <pre class="brush:php;toolbar:false;">INSERT INTO newDatabase.table1(Column1, Column2); PILIH oldDatabase.table1(column1, column2) DARIPADA oldDatabase.table1</pre> <p>Tetapi saya mendapat <kod>#1064 - Ralat Sintaks</kod></p> <p>Apakah yang salah dengan pertanyaan saya dan bagaimana saya boleh membetulkannya? </p> <p>Terima kasih terlebih dahulu</p>
P粉509383150P粉509383150444 hari yang lalu642

membalas semua(2)saya akan balas

  • P粉985686557

    P粉9856865572023-08-25 00:31:09

    INSERT INTO db1.table SELECT * FROM db2.table;

    Jika anda ingin menyalin data ke jadual yang sama dalam pangkalan data yang berbeza.

    balas
    0
  • P粉663883862

    P粉6638838622023-08-25 00:15:21

    Pertanyaan anda sepatutnya kelihatan seperti ini:

    INSERT INTO newDatabase.table1 (Column1, Column2) 
    SELECT column1, column2 FROM oldDatabase.table1;

    Kemas kini

    Memandangkan jawapan ini mendapat perhatian lebih daripada yang saya jangkakan, saya harus mengembangkan jawapan ini. Pertama, ia mungkin tidak jelas daripada jawapan itu sendiri, tetapi nama lajur tidak perlu sama. Jadi, perkara berikut juga akan berfungsi (dengan mengandaikan lajur wujud dalam jadual masing-masing):

    INSERT INTO newDatabase.table1 (Column1, Column2) 
    SELECT SomeOtherColumn, MoreColumns FROM oldDatabase.table1;

    Selain itu, ia tidak perlu menjadi lajur sebenar dalam jadual. Satu contoh mengubah data yang sering saya gunakan ialah:

    INSERT INTO newDatabase.users (name, city, email, username, added_by) 
    SELECT CONCAT(first_name, ' ', last_name), 'Asgard', CONCAT(first_name,'@gmail.com'), CONCAT(first_name,last_name), 'Damir' FROM oldDatabase.old_users;

    Jadi, mungkin peraturan yang lebih jelas sekarang ialah selagi pertanyaan SELECT mengembalikan bilangan lajur yang sama seperti yang diperlukan oleh pertanyaan INSERT, ia boleh digunakan sebagai ganti VALUES.

    balas
    0
  • Batalbalas