Nhà cung cấp của tôi được cài đặt vào trang web Drupal CMS của tôi. Bây giờ tôi cần sao chép tất cả dữ liệu của tôi từ trang web cũ. Tôi có bảng không có tiền tố trong DB cũ của tôi, nhưng trong DB mới tất cả các bảng có tiền tố dp_[table_name]
.Làm thế nào tôi có thể thay đổi tiền tố trong tất cả các bảng trong MySQL DB của tôi?
Trả lời
giải pháp zerkms không hoạt động đối với tôi. Tôi phải chỉ định cơ sở dữ liệu information_schema
để có thể truy vấn bảng Tables
.
SELECT
CONCAT('RENAME TABLE ', GROUP_CONCAT('`', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`')) AS q
FROM
`information_schema`.`Tables` WHERE TABLE_SCHEMA='test';
Edit:
Tối ưu hóa truy vấn để chỉ cuộc gọi RENAME TABLE lần. Một cái gì đó tôi bước vào là một thực tế rằng sản lượng nối được cắt ngắn tại 341 ký tự. Điều này có thể được giải quyết (nếu được cho phép bởi máy chủ của bạn) bằng cách thiết lập các biến MySQL group_concat_max_len
đến một giá trị cao hơn:
SET group_concat_max_len = 3072; -- UTF8 assumes each character will take 3 bytes, so 3072/3 = 1024 characters.
viết tập lệnh sẽ chạy RENAME TABLE cho mỗi bảng.
SELECT
GROUP_CONCAT('RENAME TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`;' SEPARATOR ' ')
FROM
`TABLES` WHERE `TABLE_SCHEMA` = "test";
nơi "thử nghiệm" dự kiến tên cơ sở dữ liệu
sau này bạn có thể truy vấn dài mà sẽ thêm tiền tố nếu bạn thực hiện nó ;-)
Bạn chỉ có thể đổ cơ sở dữ liệu, mở bãi với trình soạn thảo văn bản, thay thế tất cả các lần xuất hiện của "TẠO TẠO" bằng "TẠO BẢNG dp_" và khôi phục cơ sở dữ liệu. Phải mất một vài phút để làm.
cho đến khi cơ sở dữ liệu ít hơn vài gigabyte ;-) – zerkms
Tôi là trò chơi. :) Đối với cơ sở dữ liệu lớn hơn GB, hãy sử dụng công cụ truy vấn (ví dụ SQL Workbench), chọn tất cả các bảng trong danh sách bảng, sao chép nội dung vào cột A của bảng tính (trong trường hợp của tôi là Calc) và đặt như sau công thức trong cột B: = "đổi tên bảng" & A1 & "thành dp_" & A1 & "; "Dán công thức từ ô B1 vào mọi ô cột B khác và tập lệnh đổi tên xuất hiện trong cột B! –
như tôi đã nói trong câu trả lời của tôi - một cách thích hợp để đổi tên là sử dụng RENAME TABLE (+ information_shema để lấy tên bảng) – zerkms
phpMyAdmin cho phép bạn làm điều này ngay bây giờ. Ở cấp "Cơ sở dữ liệu", hãy chọn tab Cấu trúc để xem tất cả các bảng. Nhấp vào 'kiểm tra tất cả' (bên dưới danh sách bảng). Trên danh sách thả xuống 'Với lựa chọn', hãy chọn: 'Thay thế tiền tố bảng'.
- 1. Cách thêm tiền tố của tất cả các bảng trong mysql
- 2. Làm cách nào tôi có thể đổi tên tất cả các chỉ mục trong MySQL
- 3. MySQL: làm thế nào tôi có thể thấy tất cả các ràng buộc trên một bảng?
- 4. Làm thế nào để khóa tất cả các bảng trong một db mysql?
- 5. Làm thế nào tôi có thể nhận được gcc để thêm tiền tố vào tất cả các tên biểu tượng
- 6. Làm thế nào tôi có thể theo dõi/quan sát tất cả các thay đổi trong một biểu đồ con?
- 7. Thay thế tất cả các trường trong MySQL
- 8. Làm cách nào để tôi có thể xóa tất cả các bảng trong cơ sở dữ liệu của mình?
- 9. SQL: xoá các bảng có tiền tố
- 10. Làm thế nào tôi có thể quản lý tất cả các cảnh báo trong TFS
- 11. làm thế nào tôi có thể liệt kê ra tất cả các không gian tên trong XML?
- 12. Làm thế nào tôi có thể nhận được tất cả các checkins của tôi trong Visual Studio 2010 TFS?
- 13. Làm thế nào tôi có thể tìm thấy tất cả các đơn vị trong ứng dụng Delphi của tôi?
- 14. Làm thế nào tôi có thể rollback lệnh xóa cuối cùng của tôi trong mysql?
- 15. Làm thế nào để lặp qua tất cả các bảng trong MS Access DB
- 16. Làm thế nào tôi có thể nhận được các yếu tố tính toán của một bảng trong một queryset django?
- 17. Làm thế nào tôi có thể bỏ qua thay đổi eol và tất cả không gian màu trắng trong svn?
- 18. làm thế nào tôi có thể lặp qua tất cả các cột của OracleDataReader
- 19. Làm thế nào tôi có thể nhận được tất cả các bộ trong redis?
- 20. Làm thế nào tôi có thể thay đổi ngôn ngữ của ứng dụng của tôi
- 21. Làm cách nào tôi có thể xem tất cả các thay đổi lịch sử đối với một tệp trong SVN
- 22. bí danh tất cả các cột trong truy vấn có tiền tố
- 23. Tôi có một danh sách Python về các yếu tố chính của một số. Làm thế nào để tôi (pythonically) tìm thấy tất cả các yếu tố?
- 24. Làm thế nào tôi có thể thay đổi các biểu tượng của ứng dụng WPF
- 25. Làm cách nào để đặt tiền tố bảng trong Yii
- 26. Làm cách nào tôi có thể biết tất cả các thẻ trong Mercurial?
- 27. Làm thế nào tôi có thể biểu thị các trường nhập đã thay đổi trong AngularJS
- 28. MySQL: thay đổi các cột của PRIMARY KEY tôi
- 29. Làm thế nào tôi có thể thay đổi mã hóa bảng mã trong phản hồi HTTP trong Java
- 30. Làm thế nào tôi có thể chuyển đổi một chuỗi thành một float trong mysql?
True, điều này làm việc cho tôi kể từ khi tôi đã làm việc trên localhost XAMPP bằng cách sử dụng Joomla và tôi muốn thay đổi để tự động Joomla tiền tố. Tôi làm theo các bước của bạn-tôi đã phải xác định 'information_schema'.'Tables' như bạn đã làm và thiết lập SET group_concat_max_len = 10240; trong trường hợp của tôi vì có nhiều bảng. +1 – MJoraid
Một điểm nữa, bạn có thể sử dụng lệnh tương tự để di chuyển bảng trên cơ sở dữ liệu (ví dụ: backup_db) như: 'SELECT CONCAT ('TÊN BÊN TÊN', TABLE_NAME, 'TO backup_db.', TABLE_NAME, ';') FROM INFORMATION_SCHEMA. BẢNG KHI Đ tableN table_schema = 'testbot'; ' – sactiw
điểm tuyệt vời chỉnh sửa về biến' group_concat_max_len'! Tôi đã không nhận được câu đầy đủ không, làm việc tuyệt vời! – AlexGH