Tôi có một cơ sở dữ liệu trong đó tất cả các bảng được đặt trước bằng một tập hợp các ký tự giống nhau. Điều này đã được thực hiện bởi vì tại một thời điểm họ đã được trong một cơ sở dữ liệu được chia sẻ thiết lập cho các dự án thú cưng với hàng trăm bảng khác. Ứng dụng, và do đó cơ sở dữ liệu, bây giờ đã sẵn sàng để được chuyển ra khỏi giai đoạn đó và sẵn sàng để được ra trên riêng của nó. Tôi muốn loại bỏ tiền tố cho mỗi bảng. Có cách nào dễ hơn để thực hiện việc này thay vì nhấp chuột phải và đổi tên từng bảng riêng lẻ?Đổi tên tất cả các bảng trong cơ sở dữ liệu
Trả lời
Bạn có thể làm điều gì đó như kịch bản toàn bộ cơ sở dữ liệu và thực hiện thay thế chuỗi trên tập lệnh, chạy nó trên cơ sở dữ liệu mới, sau đó nhập dữ liệu. Điều này tất nhiên phụ thuộc vào cách bạn có thể phù hợp với chuỗi được thay thế. Bạn cũng có thể phải thực hiện các thay đổi tương ứng trong ứng dụng của mình. Bạn luôn có thể thử một cái gì đó như thế này trên một cơ sở dữ liệu thử nghiệm để xem nếu nó sẽ làm việc.
Hãy xem này quá - Mass Renaming of Tables and Stored Procedures
Một phương pháp có một số chi phí và người kia cũng tương tự như đề nghị của tôi.
@Bratch +1 một cách đẹp hơn nhiều để nói những gì tôi đã nói. – Hogan
@Hogan Yeah, nhưng khác nhau.Câu trả lời của bạn có vẻ giống như viết một kịch bản để sửa đổi dữ liệu meta. Tôi không nói rằng bạn cần phải viết một kịch bản nào cả, chỉ cần viết kịch bản ra khỏi cơ sở dữ liệu như các lệnh SQL (Nhấp chuột phải, Tác vụ, Tạo tập lệnh). Thực hiện tìm/thay thế và thay thế tiền tố bằng không có gì, và sau đó chạy SQL đã sửa đổi trên cơ sở dữ liệu mới. Điều này sẽ đổi tên tất cả các tham chiếu đến các bảng trong khung nhìn và sprocs. Một cái nhìn nhanh về SQL được tạo bởi kịch bản lệnh db sẽ đưa ra một ý tưởng nếu nó hoạt động đúng hay không. – Bratch
Bạn có thể viết kịch bản để xem thông tin meta và thay đổi nó, nhưng điều này sẽ không làm hỏng tất cả SP và Truy vấn tham số của bạn?
Nó sẽ hủy hoại mọi thứ - lượt xem , vv Nếu có SCHEMABINDING trên bất cứ điều gì, đó sẽ phải được xử lý đầu tiên ... –
Trước tiên, hãy viết một thủ tục lưu sẵn có tham số tên bảng và sử dụng phân tích cú pháp chuỗi và ALTER TABLE để loại bỏ tiền tố khỏi bảng được chỉ định.
Sau đó, sử dụng sp_MSforeachtable để gọi thủ tục đó cho mỗi bảng.
tham khảo: http://weblogs.sqlteam.com/joew/archive/2007/10/23/60383.aspx
select 'exec sp_rename @objname=' + name + ', @newname=' + replace(name ,'prefixedchars', '')
from sysObjects
where type = 'U'
Kết quả từ này sẽ là một cái gì đó như:
exec sp_rename @objname=prefixedcharsTable1, @newname=Table1
exec sp_rename @objname=prefixedcharsTable2, @newname=Table2
exec sp_rename @objname=prefixedcharsTable3, @newname=Table3
etc... for each table in your db
Tất cả bạn phải làm là sao chép các báo cáo vào một cửa sổ truy vấn mới và chạy.
Hãy cẩn thận:
- Bạn sẽ nhận được một thông báo cảnh báo như sau:
Caution: Changing any part of an object name could break scripts and stored procedures.
- Bạn sẽ phải đổi tên các bảng trong bất kỳ thủ tục lưu trữ, chức năng, quan điểm, và gây nên.
Đây là một giải pháp tuyệt vời vì bạn có thể xem kịch bản đổi tên trước khi nó chạy. –
Hoàn toàn từ góc nhìn "thay thế cho nhấp chuột phải, đổi tên" (không đổi tên tài liệu tham khảo, quy trình, chế độ xem, v.v.) - trộn lên một chút. Lấy danh sách các bảng:
select name from sys.Tables
sao chép và qua nó vào emacs (hoặc biên tập dòng regex yêu thích của bạn) và chạy một dòng thay thế regex: tìm kiếm \(xyz.*\)
và thay thế bằng SP_RENAME 'xyz\1', '\1';
này repalces các xyzFoo bảng với Foo. Dán các dòng trở lại vào SQL Server và chạy nó.
- 1. Xóa tất cả các hàng trong bảng khỏi bảng cơ sở dữ liệu SQLite
- 2. Cách xem tất cả các bảng trong cơ sở dữ liệu HSQLDB?
- 3. SQL Server - Tạo Trigger đơn chạy cho TẤT CẢ các bảng trong cơ sở dữ liệu
- 4. Đặt tên bảng và bảng cơ sở dữ liệu
- 5. Tìm tất cả các đối tượng cơ sở dữ liệu theo tên?
- 6. Đổi tên tên cột trong cơ sở dữ liệu postgresql
- 7. Đang cập nhật tất cả các bảng trong một cơ sở dữ liệu MySQL
- 8. cắt ngắn tất cả các bảng trong cơ sở dữ liệu mysql
- 9. Làm thế nào để xóa tất cả các bảng trong cơ sở dữ liệu MySQL?
- 10. Liệt kê tất cả các bảng trong cơ sở dữ liệu
- 11. Cách lấy danh sách tất cả các bảng trong hai cơ sở dữ liệu khác nhau
- 12. PostgreSQL - Đổi tên cơ sở dữ liệu
- 13. Truy vấn SQL để tìm tất cả các bảng trong cơ sở dữ liệu có cột có tên cụ thể
- 14. Thay đổi độ chính xác của tất cả các cột thập phân trong mỗi bảng trong cơ sở dữ liệu
- 15. Đặt tên cột boolean trong bảng cơ sở dữ liệu
- 16. Xóa dữ liệu khỏi tất cả các bảng trong MYSQL
- 17. Android đổi tên Cơ sở dữ liệu SQLite
- 18. Học thuyết tự động tạo tất cả các bảng cơ sở dữ liệu?
- 19. Truy vấn SQL Server để tìm tất cả các tên cơ sở dữ liệu hiện tại
- 20. Xóa tất cả trừ n trên cùng khỏi bảng cơ sở dữ liệu trong SQL
- 21. Mysql - tìm một bảng trong tất cả cơ sở dữ liệu
- 22. Làm thế nào để có được tất cả các tên bảng từ một cơ sở dữ liệu?
- 23. Đặt lại cơ sở dữ liệu (xóa tất cả), sau đó gieo một cơ sở dữ liệu
- 24. Cập nhật Collation của tất cả các trường trong cơ sở dữ liệu khi đang bay
- 25. Làm thế nào để thả tất cả các bảng trong cơ sở dữ liệu mà không làm rơi cơ sở dữ liệu?
- 26. cơ sở dữ liệu đổi tên trong psql
- 27. Nhận tổng số của tất cả các kích thước cơ sở dữ liệu trong SQL Server
- 28. đếm chính xác của tất cả các hàng trong cơ sở dữ liệu MySQL
- 29. Tạo tập lệnh của tất cả các chỉ mục trong cơ sở dữ liệu
- 30. Bảng xóa MySQL - Cơ sở dữ liệu hiện tại hoặc mọi cơ sở dữ liệu?
Tôi đã tạo cơ sở dữ liệu mới, với lược đồ đặt tên mới cho các bảng mới và chọn dữ liệu trên đó. –
Hãy xem điều này quá - "Đổi tên hàng loạt các bảng và các thủ tục được lưu trữ" http://stackoverflow.com/questions/1098585/mass-renaming-of-tables-and-stored-procedures – Bratch