2012-07-27 2 views
2

기존 데이터베이스에 대한 업데이트 인 큰 텍스트 파일에 대량 삽입을 수행했습니다. 잘라 내기 오류로 모든 종류의 문제가 발생하여 모든 것을 varchar(max)으로 설정했습니다. 이제 모든 것이 SQL Server에 있습니다. 데이터베이스 b의 데이터 형식을 데이터베이스 a의 데이터 형식으로 변환하고 싶습니다. 두 데이터베이스의 테이블과 필드 이름이 같은 경우이 작업을 수행하는 몇 가지 방법은 무엇입니까? 또는 '하드 코드 된'가져 오기 후에 실행하는 기존 스크립트를 갖는 것이 가장 좋습니다.한 데이터베이스 테이블에서 다른 데이터베이스 테이블로 데이터 형식 변환

+1

모든 것을'varchar (max)'로 설정해야합니까? 확실히 당신은 이미 varchar였던 컬럼에 대해 최대 길이를 설정할 필요가있었습니다. 다른 모든 데이터 타입은 아마 괜찮을 것이고 당신은이 엉망이되지 않을 것입니다! 다시 가져 오기가 가능합니까? 그것은 아마 적은 일 것입니다. – Bridge

+0

CAST() 함수는 무엇입니까? –

+0

사본 DB에 키, 관계, 색인 등이 있습니까? –

답변

1

이런 식으로 뭔가를 시도하고 결과를 수정하고

declare @sql varchar(max) 
set @sql='' 
select 
    @[email protected]+'Alter table '+table_name+' alter column '+column_name+' '+cast(data_type as varchar(100))+ 
    case when data_type like '%char%' then '(' else '' end +cast(coalesce(CHARACTER_MAXIMUM_LENGTH,'') as varchar(100))+ 
    case when data_type like '%char%' then ')' else '' end+';' 
from 
    information_schema.columns 
where 
    table_name='test' 
print @sql 
+0

나는 동적 SQL을 아직 작성하지 않았다. :) – wootscootinboogie

+0

이것이 내가 할 일이다. 그것에 대해 의사 코드 방식으로 생각하면됩니다. – wootscootinboogie

+0

확인. 동적 인 SQL이 필요한 몇 가지 경우가 있습니다 – Madhivanan

0

하나의 SQL Server 데이터베이스에서 다른 데이터베이스 서버로 데이터를 이동하는 경우 Atlantis Interactive Data Inspector을 사용할 수 있습니다. 그렇게하고 싶지 않다면 데이터베이스에서 테이블을 스크립트 아웃 한 다음 모든 열 앞에 ALTER TABLE [table] ALTER COLUMN을 붙여 데이터베이스 b에서 실행하면됩니다.

+0

이쪽으로 돌아 가면. 나는'a.column1 = a.column2' 문과 같이 cast 함수를 실행할 문장을 생각하고있었습니다. – wootscootinboogie

1

당신은 테이블의 뷰를 만들 수 있습니다 실행 당신에서 끌어 찾고 그냥) (당신이 데이터 유형으로 변경하는 데 필요한 열을 캐스팅 당신은 그들을 바꿀 필요가 있습니다. 그런 다음 해당 데이터 유형에서 해당보기에서 모든 삽입을 수행 할 수 있습니다. 희망이 도움이됩니다.

관련 문제