Biasanya saya menggunakan pencarian manual untuk mengganti teks dalam database MySQL menggunakan phpmyadmin. Saya sudah bosan sekarang, bagaimana saya bisa menjalankan kueri untuk menemukan dan mengganti teks dengan teks baru di seluruh tabel di phpmyadmin?
Contoh: cari kata kunci domain.com
, ganti dengan www.domain.com
.
mysql
phpmyadmin
alyasabrina
sumber
sumber
Jawaban:
Untuk
single table
pembaruanDari
multiple tables
-Jika Anda ingin mengedit dari semua tabel, cara terbaik adalah mengambil
dump
dan kemudianfind/replace
mengunggahnya kembali.sumber
If you want to edit from all tables, best way is to take the dump and then find/replace and upload it back.
Gunakan sed pada dump untuk menemukan / mengganti:sed "s:unwanted_text:wanted_text:g" dump.sql
Cara termudah yang saya temukan adalah membuang database ke file teks, menjalankan perintah sed untuk melakukan penggantian, dan memuat kembali database ke MySQL.
Semua perintah di bawah ini adalah bash di Linux.
Buang database ke file teks
Jalankan perintah sed untuk menemukan / mengganti string target
Muat ulang basis data ke dalam MySQL
Peasy mudah.
sumber
\/\/domain.com
sed -i
perintah dapat membuangunterminated substitute pattern
kesalahan. Anda bisa menggunakannyased -i '' -e 's/oldString/newString/g' ./db.sql
.Letakkan ini di file php dan jalankan dan itu harus melakukan apa yang Anda inginkan.
sumber
Menjalankan kueri SQL dalam PHPmyadmin untuk menemukan dan mengganti teks di semua posting blog wordpress, seperti menemukan mysite.com/wordpress dan menggantinya dengan mysite.com/news Tabel dalam contoh ini adalah tj_posts
sumber
wp_posts
sangat mirip dengan kueriUPDATE `wp_posts` SET `post_content` = replace(post_content, 'mysite.com/wordpress', 'mysite.com/news')
Pilihan lain adalah membuat pernyataan untuk setiap kolom dalam database:
Ini akan menghasilkan daftar pernyataan pembaruan yang dapat Anda jalankan.
sumber
Seperti misalnya, jika saya ingin mengganti semua kemunculan John dengan Mark, saya akan menggunakan di bawah ini,
sumber
phpMyAdmin termasuk alat temukan dan ganti yang rapi.
Pilih tabel, lalu tekan Cari > Cari dan ganti
Permintaan ini memakan waktu sekitar satu menit dan berhasil menggantikan beberapa ribu contoh
oldurl.ext
dengannewurl.ext
dalam Kolompost_content
Hal terbaik tentang metode ini: Anda bisa memeriksa setiap pertandingan sebelum melakukan.
NB Saya menggunakan phpMyAdmin 4.9.0.1
sumber
Saya percaya jawaban "swapnesh" menjadi yang terbaik! Sayangnya saya tidak dapat menjalankannya di phpMyAdmin (4.5.0.2) yang walaupun tidak logis (dan mencoba beberapa hal) tetap mengatakan bahwa pernyataan baru ditemukan dan tidak ada pembatas yang ditemukan ...
Jadi saya datang dengan solusi berikut yang mungkin berguna jika Anda mengalami masalah yang sama dan tidak memiliki akses lain ke database selain PMA ...
Untuk menguji hasil yang diharapkan, Anda mungkin ingin menggunakan:
sumber
Jika Anda yakin bahwa tidak ada bidang yang diperbarui adalah serial, solusi di atas akan berfungsi dengan baik.
Namun, jika salah satu bidang yang perlu diperbarui berisi data serial, SQL Query atau pencarian / penggantian sederhana pada file dump, akan memutus serialisasi (kecuali string yang diganti memiliki jumlah karakter yang persis sama dengan string yang dicari).
Yang pasti, bidang "serial" terlihat seperti ini:
Jumlah karakter dalam data yang relevan dikodekan sebagai bagian dari data.
Serialisasi adalah cara untuk mengubah "objek" ke dalam format yang mudah disimpan dalam database, atau untuk dengan mudah mengangkut data objek antara berbagai bahasa.
Berikut adalah penjelasan tentang berbagai metode yang digunakan untuk membuat serialisasi data objek, dan mengapa Anda mungkin ingin melakukannya, dan di sini ada posting WordPress-centric: Data Serialized, Apa Artinya Dan Mengapa begitu penting? dalam bahasa sederhana.
Akan luar biasa jika MySQL memiliki beberapa alat bawaan untuk menangani data serial secara otomatis, tetapi tidak, dan karena ada berbagai format serialisasi, bahkan tidak masuk akal untuk melakukannya.
wp-cli
Beberapa jawaban di atas tampak spesifik untuk database WordPress, yang membuat serialisasi banyak datanya. WordPress menawarkan alat baris perintah, WP mencari-ganti , yang tidak menangani serialisasi.
Perintah dasar adalah:
Namun, WordPress menekankan bahwa hal
guid
itu tidak boleh diubah , jadi disarankan untuk melewatkan kolom itu.Ini juga menunjukkan bahwa sering kali Anda ingin melewati
wp_users
meja.Ini akan terlihat seperti apa:
wp search-replace 'https://old-domain.com' 'https://shiney-new-domain.com' --skip-columns=guid --skip-tables=wp_users --dry-run
Catatan: Saya menambahkan
--dry-run
flag sehingga copy-paste tidak akan secara otomatis merusak database siapa pun. Setelah Anda yakin skrip melakukan apa yang Anda inginkan, jalankan kembali tanpa bendera itu.Plugin
Jika Anda menggunakan WordPress, ada juga banyak plugin gratis dan komersial yang menawarkan antarmuka gui untuk melakukan hal yang sama, dikemas dengan banyak fitur tambahan.
Interconnect / itu skrip php
Interconnect / itu menawarkan skrip php untuk menangani data serial: alat Safe Search and Replace . Itu dibuat untuk digunakan di situs WordPress, tetapi sepertinya itu dapat digunakan pada basis data apa pun yang diserialisasi oleh PHP.
Banyak perusahaan, termasuk WordPress sendiri, merekomendasikan alat ini. Instruksi di sini, sekitar 3/4 di halaman.
sumber
terbaik Anda mengekspornya sebagai file sql dan membukanya dengan editor seperti kode studio visual dan menemukan dan mengganti kata-kata Anda. saya ganti dalam 1 gig file sql dalam 1 menit selama 16 kata yang totalnya 14600 kata. ini cara terbaik. dan setelah menggantinya simpan dan impor lagi. jangan lupa kompres dengan zip untuk impor.
sumber
Hasilkan perubahan kueri SQL (FAST)
mysql -e "SELECT CONCAT ('update', table_name, 'set', column_name, '= ganti (', column_name, ',' 'www.oldsite.com' ',' 'www.newsite.com' '); ') SEBAGAI pernyataan DARI informasi_schema.kolom WHERE table_name SUKA' wp_% '"-u root -p your_db_name_here> upgrade_script.sql
Hapus semua sampah di awal file. Saya punya beberapa.
nano upgrade_script.sql
Jalankan skrip yang dibuat dengan opsi --force untuk melewati kesalahan. (PERLAHAN - ambil kopi jika DB besar)
mysql -u root -p your_db_name_here - memaksa <upgrade_script.sql
sumber
Dalam kasus kalimat dengan huruf besar - kecil, Kita dapat menggunakan BINARY REPACE
sumber