모든 테이블에 같은 문자 집합이 접두사로있는 데이터베이스가 있습니다. 이것은 한 번에 수백 개의 다른 테이블이있는 애완 동물 프로젝트를 위해 설정된 공유 데이터베이스에 있었기 때문에 수행되었습니다. 응용 프로그램 및 데이터베이스는 이제 해당 단계에서 벗어나 자체 준비가 완료 될 준비가되었습니다. 각 테이블의 접두사를 제거하고 싶습니다. 각 테이블을 개별적으로 마우스 오른쪽 단추로 클릭하고 이름을 바꾸는 것보다 쉬운 방법이 있습니까?데이터베이스의 모든 테이블 이름 바꾸기
답변
전체 데이터베이스를 스크립팅하고 스크립트에서 문자열 바꾸기를 수행하고 새 데이터베이스에서 실행 한 다음 데이터를 가져올 수 있습니다. 물론 이것은 교체 할 문자열을 얼마나 잘 일치시킬 수 있는지에 달려 있습니다. 응용 프로그램에 해당 변경 사항을 적용해야 할 수도 있습니다. 테스트 데이터베이스에서 항상 이와 같은 방식으로 시도해 볼 수 있습니다.
도 이것 좀보세요 - Mass Renaming of Tables and Stored Procedures한 가지 방법은 약간의 비용이, 다른 하나는 내 제안과 유사하다.
@Bratch +1 나가 말한 것을 말하는의 매우 더 좋은 방법. – Hogan
@Hogan 그래,하지만 다르다.실제로 메타 데이터를 수정하는 스크립트를 작성하는 것과 같은 대답이 들립니다. 나는 스크립트를 작성해야한다는 말은 아니며 데이터베이스를 SQL 명령 (오른쪽 클릭, 작업, 스크립트 생성)으로 스크립트 만하면됩니다. 접두어를 찾기/바꾸기 및 바꾸기를 수행 한 다음 새 데이터베이스에서 수정 된 SQL을 실행하십시오. 뷰와 sprocs의 테이블에 대한 모든 참조의 이름이 바뀝니다. db 스크립트에 의해 생성 된 SQL을 간략히 살펴보면 제대로 작동하는지 알 수 있습니다. – Bratch
메타 정보를보고 변경하기 위해 스크립트를 작성할 수는 있지만 모든 SP와 매개 변수가있는 쿼리가 손상되지는 않습니까?
모든 것을 망칠 것입니다 - 뷰 등등. 만약에 무엇이든에 SCHEMABINDING가 있으면, 저것은 첫번째로 다루어야 할 것이다. ... –
먼저 테이블 이름 매개 변수가있는 저장 프로 시저를 작성하고 문자열 구문 분석 및 ALTER TABLE을 사용하여 지정된 테이블에서 접두사를 제거하십시오.
그런 다음 sp_MSforeachtable을 사용하여 각 테이블에 대해 해당 프로 시저를 호출하십시오.
는 참고 :이에서 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'
결과가있을 것입니다 뭔가 같은 :
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
새 쿼리 창 및 실행에 그 문을 복사하기 만하면됩니다.
주의 사항은 다음과 같이
- 당신은주의 메시지가 표시됩니다 :
Caution: Changing any part of an object name could break scripts and stored procedures.
- 당신은 어떤 저장 프로 시저, 함수, 뷰, 트리거의 테이블 이름을 변경해야합니다.
이름 바꾸기 스크립트가 실행되기 전에 볼 수 있기 때문에 이것은 훌륭한 솔루션입니다. –
"마우스 오른쪽 버튼으로 클릭, 이름 바꾸기"관점 (참조, 절차,보기 등의 이름을 변경하지 않음)에서 순수하게 - 약간 섞으십시오. 테이블의 목록 가져 오기 : 이맥스 (또는 당신의 마음에 드는 정규식 라인 편집기)에
select name from sys.Tables
사본과 과거와 정규식 라인 교체 실행 검색 \(xyz.*\)
및 SP_RENAME 'xyz\1', '\1';
이 푸와 테이블 xyzFoo을 repalces로 교체합니다. 선을 다시 SQL Server에 붙여 넣은 다음 실행하십시오.
- 1. SQL - 데이터베이스의 모든 테이블 열의 프로그래밍 방식으로 이름 바꾸기
- 2. SQL Express의 테이블 이름 바꾸기
- 3. 테이블 이름 바꾸기 열
- 4. 데이터베이스의 모든 테이블 목록
- 5. 데이터베이스의 모든 테이블 나열
- 6. zencart 데이터베이스의 장바구니 테이블 이름
- 7. 테이블 이름 바꾸기 'NOW() + old_table_name'
- 8. cakephp 이름 바꾸기 acl 테이블 이름
- 9. "pages_backup"으로 시작하는 데이터베이스의 모든 테이블 이름 나열
- 10. 데이터베이스 파일의 이름 바꾸기 : 테이블 삭제 하시겠습니까?
- 11. Innodb 이름 바꾸기 테이블 관계 문제가 발생했습니다
- 12. 와일드 카드를 사용하여 테이블 접두어 이름 바꾸기
- 13. Oracle 테이블 또는 뷰의 이름 바꾸기
- 14. 모든 테이블 또는 주어진 데이터베이스의 테이블 만 나열하는 방법
- 15. 배치를 사용하여 폴더의 모든 파일 이름 바꾸기
- 16. PostgreSQL - 데이터베이스 이름 바꾸기
- 17. MySql 데이터베이스의 텍스트 바꾸기
- 18. MySQL은 - 이름 바꾸기 열
- 19. 데이터베이스의 두 테이블 연결
- 20. 이름 바꾸기
- 21. 루. [테이블 이름] 대신 dbo. [테이블 이름]?
- 22. wincvs의 폴더 이름 바꾸기
- 23. 리포지토리 폴더 이름 바꾸기
- 24. 파일론 컨트롤러의 이름 바꾸기
- 25. 폴더의 파일 이름 바꾸기
- 26. PowerPoint에서 개체 이름 바꾸기
- 27. 데이터베이스 필드의 이름 바꾸기
- 28. 데이터베이스의 모든 varchar 및 nvarchar 필드에서 줄 바꾸기 (\ r \ n을 \ n으로 바꾸기)
- 29. 큰 ID 이름 바꾸기
- 30. 데이터베이스의 데이터를 CSV 파일로 바꾸기
새 테이블에 대한 새로운 명명 스키마를 사용하여 새 데이터베이스를 만들고 데이터를 선택했습니다. –
이걸 한번보세요 - "테이블 및 저장 프로 시저의 대량 이름 바꾸기"http://stackoverflow.com/questions/1098585/mass-renaming-of-tables-and-stored-procedures – Bratch