23.8.7.64 mysql_set_local_infile_handler()
void mysql_set_local_infile_handler(MYSQL *mysql, int
(*local_infile_init)(void **, const char *, void *), int
(*local_infile_read)(void *, char *, unsigned int), void
(*local_infile_end)(void *), int (*local_infile_error)(void *,
char*, unsigned int), void *userdata);
설명
이 함수는 LOAD DATA LOCAL INFILE
명령문을 실행하는 동안 사용되는 콜백을 설치합니다. 이에 따라, 응용 프로그램은 로컬 (클라이언트) 데이터 파일의 읽기를 제어 할 수 있습니다. 인수는 연결 핸들러 콜백 함수에 대한 일련의 포인터 및 콜백이 정보를 공유하는 데 사용할 수있는 데이터 영역에 대한 포인터입니다.
mysql_set_local_infile_handler()
를 사용하려면 다음 콜백 함수를 작성해야합니다.
int local_infile_init(void **ptr, const char *filename, void *userdata);
초기화 함수. 이것은 필요한 설정을 수행하는 데이터 파일을 여는 데이터 구조를 할당 등을 위해 1 회 불려갑니다. 첫 번째 void**
인수는 포인터에 대한 포인터입니다. 기타 각 콜백에 전달되는 값에 대한 포인터 (즉, *ptr
)을 설정할 수 있습니다 ( void*
로). 콜백이 지시 대상 값을 사용하여 상태 정보를 유지 보수 할 수 있습니다. userdata
인수는 mysql_set_local_infile_handler()
에 전달되는 같은 값입니다.
초기화 함수가 성공하면 0을 반환하고, 실패시 0이 아닌를 반환합니다.
int local_infile_read(void *ptr, char *buf, unsigned int buf_len);
데이터 읽기 함수. 이것은 데이터 파일을 읽기 위해 반복 호출됩니다. buf
는 읽어 들인 데이터를 저장하는 버퍼를 지시하고 buf_len
는 콜백이 읽기 버퍼에 저장할 수있는 최대 바이트 수입니다. (더 적은 바이트를 읽을 수 있지만, 그것은 더 바이트를 읽어 내야하지 않습니다.)
반환 값은 읽은 바이트 수에서 더 이상 데이터를 읽을 수없는 경우는 제로입니다 (이것은 EOF를 나타냅니다). 오류가 발생하면 0보다 작은 값을 반환합니다.
void local_infile_end(void *ptr)
종료 함수. 이것은 local_infile_read()
가 제로 (EOF) 또는 오류를 반환 한 후 1 회 호출됩니다. 이 함수는 local_infile_init()
에 의해 할당 된 메모리의 할당을 해제하고 필요한 다른 정리 작업을 수행합니다. 그것은 초기화 함수가 오류를 반환 한 경우에도 호출됩니다.
int local_infile_error(void *ptr, char *error_msg, unsigned int error_msg_len);
오류 처리 함수. 이것은 다른 몇개의 함수가 에러를 돌려 주었을 경우에 사용자에게 반환 텍스트 오류 메시지를 가져 오기 위해 호출됩니다. error_msg
는 메시지가 기록 된 버퍼를 지시하고 error_msg_len
는 버퍼의 길이입니다. 최대 error_msg_len
-1 바이트에서 NULL로 끝나는 문자열로 메시지를 씁니다.
반환 값은 오류 번호입니다.
일반적으로 다른 콜백는 ptr
에 의해 지시되는 데이터 구조에 오류 메시지를 저장하기 위해 local_infile_error()
은 거기에서 error_msg
에 메시지를 복사 할 수 있습니다.
C 코드에서 mysql_set_local_infile_handler()
를 호출하여 포인터를 콜백 함수에 전달 된 후, LOAD DATA LOCAL INFILE
명령문을 실행할 수 있습니다 (예를 들어, mysql_query()
를 사용하여). 클라이언트 라이브러리는 자동으로 콜백을 호출합니다. LOAD DATA LOCAL INFILE
은 local_infile_init()
콜백에 두 번째 매개 변수로 전달됩니다.
반환 값
없음.
오류
없음.