2012-04-08 30 views
9

Vì vậy, về cơ bản tôi có một cơ sở dữ liệu Joomla trong MySQL có một loạt các bảng có tiền tố 'jmla_'. Tôi muốn đổi tên tất cả các bảng này bằng cách thay thế tiền tố 'jmla_' bằng tiền tố 'jos_'. Bất kỳ ý tưởng về làm thế nào để làm điều này với một kịch bản SQL đơn giản hoặc truy vấn SQL?Trong MySQL, làm cách nào để đổi tên hàng loạt các bảng trong cơ sở dữ liệu?

Trả lời

2
  1. xuất khẩu sử dụng phpMyAdmin để sql tập tin
  2. Sử dụng bất kỳ trình soạn thảo văn bản (Tôi thích vim, làm việc tuyệt vời trên các tập tin lớn) với chức năng "tìm và thay thế" để mở tập tin
  3. Đừng "tìm và thay thế" , đặt tiền tố thực tế của bạn vào ô tìm kiếm và được cập nhật trong hộp thay thế
  4. Nhập tệp bằng phpmyadmin.

Nhớ bỏ cơ sở dữ liệu cũ trước khi nhập bằng phpmyadmin. Điều này có thể được thực hiện, kiểm tra các tùy chọn phù hợp trong quá trình xuất.

+0

Và những gì sẽ xảy ra nếu một trong những tên của các hàng có "jmla_" trong đó? Hay tệ hơn, nếu dữ liệu có ở đâu đó trong đó? –

+0

1. Tôi chưa bao giờ thấy trường hợp này trong thực tế 2. Giải pháp của tôi đã tạo ra một điều tốt, thay đổi điểm thành cơ sở dữ liệu không tồn tại. –

+0

Vấn đề là, khi có một giải pháp tốt hơn, không có giá trị rủi ro khi tìm kiếm và thay thế đơn giản. Giải pháp có thể dẫn đến các vấn đề khó gỡ lỗi trong tương lai. –

3
RENAME TABLE jmla_whatever to jos_whatever; 

Bạn sẽ phải viết tập lệnh để bao gồm tất cả các bảng - bạn có thể điền tập lệnh của mình với đầu ra là show tables. Xem http://dev.mysql.com/doc/refman/5.0/en/rename-table.html để biết chi tiết.

7

Run tuyên bố này:

SELECT 'rename table '||table_name||' to '||'jos'||substr(table_name,5)||';' 
FROM information_schema.tables 
WHERE table_name like 'jmla%' 

Điều này tạo ra một kịch bản mà sẽ đổi tên tất cả các bảng. Chỉ cần sao chép & dán đầu ra vào máy khách SQL của bạn.

(Bạn sẽ cần phải thay đổi || để điều hành nối phi tiêu chuẩn MySQL trong trường hợp bạn không chạy nó trong chế độ ANSI)

+4

Hãy chắc chắn rằng bạn cũng lọc trên cơ sở dữ liệu bạn muốn áp dụng điều này, nếu không điều này sẽ tạo ra các truy vấn RENAME trên tất cả các cơ sở dữ liệu bao gồm các cài đặt Joomla khác mà bạn có thể có: 'AND TABLE_SCHEMA = 'your_joomla_db'' – Fanis

8
SELECT concat ('rename table ',table_name,' to ',table_name,'_old;') 
FROM information_schema.tables 
WHERE table_name like 'webform%' 
    and table_schema='weiss_db_new' 

sẽ làm việc.

0

Bạn đã cân nhắc sử dụng Thành phần công cụ quản trị Akeeba cho Joomla! và sau đó sử dụng Trình chỉnh sửa tiền tố cơ sở dữ liệu để thay đổi các tiền tố bảng, hoạt động thực sự tốt. Công cụ quản trị Akeeba có thể được sử dụng để bảo mật cho Joomla của bạn! cài đặt

Akeeba có thể thu được here

Các vấn đề liên quan