티스토리 뷰
시스템개발 등으로 한쪽의 table에서 새로만든 table로 데이터 복사할때 사용할 명령어
Coding Life 2023. 4. 17. 07:34고도화작업 중 테이블을 만들고 데이터를 복사할때 유용한 정보입니다.
두개의 테이블에서 각종 데이터를 매칭해서 복사하고자 할때....
두개의 테이블이 있다고 가정하고,
CREATE TABLE `orderdb` (
`num` int NOT NULL AUTO_INCREMENT,
`order_EMP_CD` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_erpuser` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_TIME_DATE` date DEFAULT NULL,
`order_regist_date` date DEFAULT NULL,
`order_CUST` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_CUST_DES` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_WH_CD` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_warename_input` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_Ecount` text,
`order_comment` text,
PRIMARY KEY (`num`)
) ENGINE=InnoDB AUTO_INCREMENT=300 DEFAULT CHARSET=utf8;
CREATE TABLE `esmaindb` (
`num` int NOT NULL AUTO_INCREMENT,
`EMP_CD` text,
`erpuser` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`TIME_DATE` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`regist_date` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`laser_date` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`bending_date` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`painting_date` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`lastwork_date` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`output_date` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`PROD_CD` text,
`PROD_DES` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`SIZE_DES` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`CUST` text,
`CUST_DES` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`WH_CD` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`warename_input` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`memo` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`state` text,
`partsep` text,
`totalVAT` text,
`supplyPrice` text,
`workprocessvalue` text,
`requestwork` text,
`Checksend` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`orderQTY` text,
`unitprice` text,
PRIMARY KEY (`num`)
) ENGINE=InnoDB AUTO_INCREMENT=2389 DEFAULT CHARSET=utf8;
위의 데이터베이터를 이용해서 `esmaindb` 에서 `orderdb`로 데이터를 복사하려고 하는데, php로 sql 문장
$sql = "INSERT INTO orderdb (order_EMP_CD, order_erpuser, order_TIME_DATE, order_regist_date, order_CUST, order_CUST_DES, order_WH_CD, order_warename_input, order_Ecount, order_comment)
SELECT EMP_CD, erpuser, TIME_DATE, regist_date, CUST, CUST_DES, WH_CD, warename_input, '', memo
FROM esmaindb";
INSERT INTO orderdb 명령어로 시작하고 결국 select ****** from (가져올 테이블명)
이런형식으로 하면 된다는 것입니다.
주의사항으로는
위의 SQL 문장은 esmaindb 테이블에서 데이터를 선택하고, orderdb 테이블에 해당 데이터를 복사합니다.
이때 SELECT 구문에서는 esmaindb 테이블의 필드를 orderdb 테이블의 필드에 매핑하여 복사합니다. order_Ecount 필드는 빈 값을 넣고, order_comment 필드는 memo 필드에서 가져옵니다.
또한 AUTO_INCREMENT 속성을 가진 필드인 num 필드는 복사하지 않아야 합니다.
복사 후에는 orderdb 테이블에서 새로운 데이터가 추가되었는지 확인해야 합니다.
명심하고 조심히 프로그램 하자구요!
테이블의 데이터를 복사하는 명령어!!!
이번엔 좀더 복잡하게 데이터를 한쪽에서 불러와서 비교 후 같은 것만 복사하고 싶을때...
CREATE TABLE `ordergrid` (
`order_num` int NOT NULL AUTO_INCREMENT,
`order_parentKey` int NOT NULL,
`order_prod_cd` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_prod_des` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_size_des` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_p_remarks1` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_qty` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_price` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_supply_amt` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_vat_amt` text CHARACTER SET utf8 COLLATE utf8_general_ci,
`order_remarks` text CHARACTER SET utf8 COLLATE utf8_general_ci,
PRIMARY KEY (`order_num`)
) ENGINE=InnoDB AUTO_INCREMENT=1535 DEFAULT CHARSET=utf8;
ordergrid라는 table을 생성하는데, 기존의 자료를 가져와서 뭔가 비교하고 같은 자료만 추출하고 싶을때 사용하면 좋은 것 같습니다.
ordergrid 테이블에 esmaindb와 orderdb 테이블의 데이터를 복사하는 SQL문입니다.
INSERT INTO ordergrid (
order_parentKey,
order_prod_cd,
order_prod_des,
order_size_des,
order_qty,
order_price,
order_supply_amt,
order_vat_amt,
order_remarks
)
SELECT
es.num,
ob.order_Ecount,
es.PROD_DES,
es.SIZE_DES,
ob.orderQTY,
ob.unitprice,
ob.supplyPrice,
ob.totalVAT,
ob.order_comment
FROM
esmaindb es
JOIN orderdb ob ON es.regist_date = ob.order_regist_date AND es.CUST = ob.order_CUST
이 SQL문은 esmaindb와 orderdb 테이블을 조인하여 esmaindb 테이블의 num 컬럼을 order_parentKey에 복사하고, esmaindb 테이블의 PROD_DES, SIZE_DES 컬럼을 order_prod_des, order_size_des에 복사하고, orderdb 테이블의 order_Ecount, orderQTY, unitprice, supplyPrice, totalVAT, order_comment 컬럼을 order_prod_cd, order_qty, order_price, order_supply_amt, order_vat_amt, order_remarks에 복사합니다.
조인 조건으로는 esmaindb와 orderdb 테이블의 regist_date와 order_regist_date, CUST와 order_CUST 컬럼이 일치하는 데이터만 복사됩니다.
오늘 이것만으로도 충분합니다.
'IT tech Coding > mysql' 카테고리의 다른 글
SQL 쿼리문장, 로직 연구 필드에서 추출후 각종 정보 가져오기 (1) | 2023.07.08 |
---|---|
mysql 테이블이름과 데이터까지 모두 복사? 그게 가능? (1) | 2023.06.29 |
[mysql] 한테이블의 필드값을 다른테이블의 필드값으로 전체 복사하기 (0) | 2023.04.10 |
phpMyAdmin에서 DBeaver 이관시 나오는 에러 메시지 테이블 MySQL ERROR 1118 (42000): Row size too large (0) | 2023.02.15 |
카페24 phpMyadmin에서 가비아 dbeaver로 이동시 문제점 (0) | 2023.02.13 |
- Total
- Today
- Yesterday
- .htaccess수정
- 테크에능한여성
- 엑셀셀보호
- #프로그램설치
- #파이썬패키징
- 엑셀보호
- #독립실행파일
- 뫄프로그래밍
- 오토핫키가이드
- 파이썬코드줄바꿈방법
- #소프트웨어배포
- General error: 2031
- 카페24가비아phpinfo수정
- #InnoSetup
- 스크립트작성기초
- 엑셀입력보호
- 코딩효율성
- chatGPT3.5파이썬버전
- #NSIS
- 효율적코딩방법
- sql문장 날짜계산
- #cx_Freeze
- #파이썬인스톨러
- 프로그래머생활
- 코딩튜토리얼
- #InstallForge
- Bootstrap 5
- coalesce는 한국어로 "코얼레스크" 또는 "코얼리스"
- 2분후종료오토핫키
- td요소중에 1행과 1열은 제외
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |