SqlServer 데 이 터 를 Oracle 로 이전 하 는 방법 요약

1828 단어 SQLSERVERoracle10g
1. BCP 명령 을 사용 하여 csv 파일 로 Sqlserver 의 데 이 터 를 내 보 냅 니 다.우 리 는 이 명령 들 을 cmd 명령 으로 쓸 수 있 습 니 다. 문 구 는 다음 과 같 습 니 다.     
CLS
@echo off
for %%F in (.\*.sql) do (
for /f "delims=~" %%a in (%%~dfF) do (
  rem echo "%%a"
  BCP "%%a" queryout "%%~nF.csv" -c -t, -S"ip_address" -d"database_name" -U"user_name" -P"password"
  @rem makecab /d compressiontype=lzx /d compressionmemory=21 "%%~nF.csv" "%%~nF.7z"
  @rem del "%%~nF.csv"
  )
  rem pause
)
pause

ip_address: 데이터베이스 의 IP 주소
database_name: 데이터베이스 이름
user_name: 데이터베이스 사용자 이름
password: 데이터베이스 비밀번호
sql 문장의 예 는 다음 과 같 습 니 다. sql 문장의 형식 을 주의 하 십시오. 같은 줄 에 있어 야 합 니 다.

select username,userno from t_user

위의 cmd 명령 은 상기 sql 파일 과 같은 디 렉 터 리 에서 cmd 명령 을 누 르 면 SQL 구문 에서 조회 한 데 이 터 를 내 보 냅 니 다. 형식 은 csv 입 니 다.sqlserver 환경 을 설치 해 야 합 니 다. 상기 cmd 명령 이 실행 되 어야 합 니 다. bcp 명령 이 사용 되 기 때 문 입 니 다.
 
2. sqlldr 명령 을 사용 하여 일정한 ctl 형식 에 대응 하여 데 이 터 를 Oacle 에 가 져 옵 니 다.
sqlldr 명령 을 cmd 파일 로 쓸 수 있 습 니 다. 다음 과 같 습 니 다.

CLS

@echo off 

  sqlldr username/password@ip:port/instancename control=t_user.ctl errors=1000 rows=1000 log=log.txt bad=err.txt 

pause

대응 하 는 ctl 파일 은 다음 과 같 습 니 다.
load data

infile 't_user.csv'

replace into table tmp_user

fields terminated by ','

OPTIONALLY ENCLOSED BY '"'

TRAILING NULLCOLS

(username,userno)

상기 문 구 는 tuser. csv 의 데이터, tmp 로 가 져 오기user 표 에서 csv 의 열 은 각각 tmp 에 대응 합 니 다.user 표 의 username 과 userno.
Oacle 환경 을 설치 해 야 합 니 다. 상기 cmd 명령 이 유효 합 니 다.
요약: 이상 은 하나의 방향 만 제공 하고 현실 에서 데이터 베 이 스 를 뛰 어 넘 는 이전 을 할 수 있 으 며 기 존의 도구 도 많이 사용 할 수 있 습 니 다. 예 를 들 어 navicat 또는 다른 etl 도구 등 입 니 다.

좋은 웹페이지 즐겨찾기