이전 장 SQL을 사용 하 여 테이블에 데이터를 삽입 하는 방법을 설명 합니다. 그러나, 테이블에 레코드를 추가 하려는 경우 그것은 SQL 문을 사용 하 여 데이터를 입력 하기 편리 하지입니다. 다행히, MySQL 테이블에 데이터 추가를 손쉽게 일괄 데이터 입력에 대 한 몇 가지 방법을 제공 합니다. 이러한 방법에는이 섹션에는 다음 섹션에 설명 되어 있습니다. SQL 언어 수준 해결 방법에 설명합니다.
1. 기본 문법
구문: 데이터 [로컬] 파일 'file_name.txt' 로드 [대체 | 테이블 tbl_name 부하 데이터 infile 문 읽기에 빠른 속도로 텍스트 파일에서 표를 무시]. 로컬 키워드를 지정 하면 클라이언트 호스트에서 파일을 읽어. 로컬을 지정 하지 않으면 파일 서버에 있어야. (로컬 MySQL3.22.6 또는 이후 버전에서 사용할 수 있는입니다.) )
보안상의 이유로, 서버에 있는 텍스트 파일을 읽을 때, 파일 데이터베이스 디렉터리에 또는 모든 사용자가 읽을 수 있어야 합니다. 또한, 서버 파일에 데이터 파일 로드를 사용 하려면 당신은 파일 권한이 있어야 서버 호스트에. 장 일곱 번째 데이터베이스 보안을 참조 하십시오.
바꾸기 및 무시 키워드 기존 고유 키 레코드의 중복 처리를 제어합니다. Replace를 지정 하는 경우 새 줄 동일한 고유 키 값을 가진 기존 행을 대체 합니다. 지정 하면 고유 키와 기존 행의 중복 행의 입력을 생략. 경우 옵션을 지정 하지 않으면 중복 키를 발견 하 고 텍스트 파일의 나머지 부분을 무시 하는 경우 오류가 발생 합니다.
지역 키워드를 사용 하 여 기본 파일에서 데이터를 로드 하는 서버에 기본 동작 이므로 작업을 중간 파일의 전송을 중지 하는 방법은 없습니다 처럼 무시 지정 되었습니다.
2, 문서 검색 원리
서버 호스트에 파일을 찾을 때 서버는 다음 규칙을 사용 합니다.
절대 경로 이름이 주어진 경우 서버 경로 사용 합니다.
하나 이상의 선행 부분과 상대 경로 제공 하는 경우 서버는 서버 데이터 디렉터리에 상대적인 파일 검색 합니다.
선행 없이 파일 이름을 제공 하는 경우 현재 데이터베이스의 데이터베이스 디렉터리에 있는 파일 서버가 찾습니다.
이 규칙 파일을 같은 의미를 ". / myfile.txt" 파일 "MyFile.txt"으로 현재 데이터베이스의 데이터베이스 디렉터리에서 읽는 반면 서버 데이터 디렉터리에서 읽기. 또한 참고 다음 문장에 대 한 d b 1 파일에서에서를 읽을 아니라 DB2 데이터베이스 디렉터리:
mysql > d b 1;를 사용 하 여 mysql > 로드 데이터 INFILE ". / data.txt" 테이블 db2.my_table;에
3입니다. 필드와 라인 절 구문
필드 절을 지정 하는 경우 각각의 절 (종료, [선택적] 있고 탈출)는, 그들 중 하나 이상을 지정 해야 합니다.
만약 필드 절을 지정 하지 않으면 기본값은 같은 당신이 그것을 작성 하는 경우:
'T' '로 이스케이프'로 종료 필드
만약 라인 절을 지정 하지 않으면 기본값은 동일 마치 당신이 그것을 쓴:
'N'에 의해 종료 라인
즉, 기본값 결과 읽기 입력에서, 부하 데이터 infile 다음과 같이 동작 합니다.
줄 바꿈에서 줄 경계를 찾기
위치에 있는 필드 행 침입
어떤 견적 문자 캡슐화 할 필드를 기대 하지 않습니다
로케이터, 줄 바꿈, 또는 ""로 시작 하 "" 필드 값의 부분 리터럴 문자로 해석 됩니다
외부 원본에서 가져온 파일을 읽을 데이터 파일을 사용할 수 있습니다. 예를 들어 dBASE 형식에서 파일 필드 쉼표로 구분 된 큰따옴표로 둘러싸여 있을 것 이다. 파일의 줄 바꿈 문자에 의해 종료 되는 경우 아래에 표시 된 명령은 필드 및 행 처리 옵션 파일을 로드 하는 데 사용할 것입니다 설명 합니다.
mysql > 로드 데이터 INFILE ''에 표 tbl_name에 의해 종료 필드', data.txt ' 둘러싸인' ' 라인 'n'에 의해 종료 ;
모든 필드 또는 행 처리 옵션 빈 문자열 (')를 지정할 수 있습니다. 그렇지 않으면 NULL, [선택적] 둘러싸인 필드 및 필드 값으로 탈출 단일 문자 수 있어야 합니다. 필드 종료 고 라인 종료 값으로 하나 이상의 문자를 수 있습니다. 예를 들어 행을 캐리지 리턴 줄 바꿈 (CR + LF), 종료 또는 종료 'RN' 절 하는 줄을 지정 하는 같은 라인을 포함 하는 파일을 읽고 쓰기.
[선택적] 제어 필드의 경계 문자 포함 하는 필드. 출력 (선택...) 그런)에 선택적으로 생략 하는 경우 모든 필드는 포위는 동봉 하 여 문자. (필드 구분 기호로 쉼표 사용) 같은 출력의 예는 아래 표시 됩니다.
"1", "string", "100.20"
"2", "포함 하는 문자열, 쉼표", "102.20"
"3", "포함 하는 문자열을"인용"," 102.20 "
"4", "문자열을 포함 하는", 따옴표 및 쉼표 "," 102.20 "
선택적으로 지정 하는 경우 둘러싸인 문자 둘러싸고 char 및 varchar 필드에만 사용 됩니다.
1, "문자열", 100.20
2, "포함 하는 문자열, 쉼표", 102.20
3, "포함 하는 문자열을"인용", 102.20
4, "문자열을 포함 하는", 따옴표 및 쉼표 ", 102.20
참고 동봉 된 발생 필드에 문자 값은 사용 하 여는 이스케이프 된 문자는 접두사로 이스케이프 됩니다. 또한 참고를 빈 값으로 탈출을 지정 하면 부하 데이터 infile에서 제대로 읽을 수 없는 출력을 생성할 수 있습니다. 예를 들어 이스케이프 문자 빈 경우 위에 표시 된 출력을 다음과 같이 나타납니다. 라인에서 두 번째 필드 4 나오는 하지 인용 부호 (정확 하 게) 필드를 종료 하는 것 처럼 쉼표를 포함 하는 주의 사항:
1, "문자열", 100.20
2, "포함 하는 문자열, 쉼표", 102.20
3, "포함 하는 문자열을"인용", 102.20
4, "문자열을 포함 하는", 따옴표 및 쉼표 ", 102.20
필드 컨트롤 어떻게 특별 한 이스케이프 문자는 기록 또는 읽기. 이스케이프 문자에 의해 필드 비어 있지 않은 경우 출력에는 다음 문자를 접두사로 사용 됩니다.
필드 문자 이스케이프
[선택적] 문자 포함 하는 필드
필드 종료 및 라인의 첫 번째 문자로 종료는 값으로
ASCII 0 (사실상 후속 이스케이프 문자 작성 된 ASCII 값이 0 인 바이트 대신 '0')
이스케이프 문자에 의해 필드 빈 경우에, 아무 문자는 이스케이프 됩니다. 유휴 문자는 좋은 아이디어를 되지 않을 수 있습니다 지정, 데이터에서 필드 값의 테이블에 문자를 포함 하는 경우에 특히 당신이 그냥 했다.
입력, 이스케이프 문자에 의해 필드 비어 있지 않은 경우 문자 모양 박탈 및 후속 문자 그대로 필드 값의 일부입니다. 예외는 이스케이프 된 "0" 또는 "n" (즉, 또는 N, 경우 이스케이프 문자 ""). 이러한 시퀀스는 ASCII 0 (0 값 바이트)로 해석 됩니다 및 null. Null 처리를 위해 다음 규칙을 참조 하십시오.
요약
관리자의 중요 한 책임 중 하나는 데이터베이스에 대 한 데이터를 로드 하 고 그것의 중요성 때문에 MySQL 방법의 매우 넓은 범위를 제공 합니다. 이들 중 메인이이 섹션에 나열 됩니다.
1. 삽입을 사용 하 여, 문 교체
2. 삽입/바꾸기를 사용 하 여... SELECT 문
3. 로드 데이터 infile 계산 서를 사용 하 여
4, 사용 유틸리티 프로그램 Mysqlimport