원격 서버의 "MySQL LOAD FILE"기능을 사용하여 파일을로드하는 방법은 무엇입니까?원격 파일의 LoadFILE 사용 방법
LOAD DATA
의 사용 설명서에 명시된 바와 같이
원격 서버의 "MySQL LOAD FILE"기능을 사용하여 파일을로드하는 방법은 무엇입니까?원격 파일의 LoadFILE 사용 방법
LOAD DATA
의 사용 설명서에 명시된 바와 같이
, 당신은 LOCAL
키워드를 사용할 수 있습니다
LOCAL
키워드 지정된 경우, 연결의 클라이언트 측에 대한 해석됩니다
LOCAL
이 지정되면 파일은 클라이언트 호스트의 클라이언트 프로그램에서 읽고 서버로 전송됩니다. 정확한 위치를 지정하기 위해 파일을 전체 경로 이름으로 지정할 수 있습니다. 상대 경로 이름으로 주어지면 이름은 클라이언트 프로그램이 시작된 디렉토리를 기준으로 해석됩니다.
LOCAL
을LOAD DATA
과 함께 사용하면 파일의 복사본이 서버의 임시 디렉토리에 생성됩니다. 이것은tmpdir
또는slave_load_tmpdir
의 값으로 결정되는 디렉토리가 아니라 운영 체제의 임시 디렉토리이며, MySQL 서버에서는 구성 할 수 없습니다. 일반적으로 시스템 임시 디렉토리는 Linux 시스템에서는/tmp
이고 Windows에서는C:\WINDOWS\TEMP
입니다.이 디렉토리에서 사본을 저장할 공간이 부족하면LOAD DATA LOCAL
문이 실패 할 수 있습니다.이 지정되지 않은 경우 파일은 서버 호스트에 있어야하며 서버에서 직접 읽어야합니다. 서버는 다음 규칙을 사용하여 파일을 찾습니다.
파일 이름이 절대 경로 이름 인 경우 서버는 지정된대로 파일 이름을 사용합니다.
파일 이름이 하나 이상의 선행 구성 요소가있는 상대 경로 이름 인 경우 서버는 서버의 데이터 디렉토리를 기준으로 파일을 검색합니다.
주요 구성 요소가없는 파일 이름이 지정되면 서버는 기본 데이터베이스의 데이터베이스 디렉토리에서 파일을 찾습니다.
myfile.txt
라는 이름으로 파일의 데이터베이스 디렉토리에서 읽어 반면 비LOCAL
경우,이 규칙은,./myfile.txt
로라는 이름의 파일이 서버의 데이터 디렉토리에서 읽도록 의미하는 것으로주 디폴트의 데이타베이스
LOAD DATA INFILE 'data.txt' INTO TABLE db2.my_table;
Windows 경로 : 예를 들어,
db1
경우 기본 데이터베이스는 다음LOAD DATA
문은 문이 명시 적으로db2
데이터베이스의 테이블에 파일을로드에도 불구하고,db1
에 대한 데이터베이스 디렉토리에서 파일data.txt
을 읽고 이름은 백 슬래시 대신 슬래시를 사용하여 지정됩니다. 백 슬래시를 사용하는 경우 이중으로 사용해야합니다.보안상의 이유로 서버에있는 텍스트 파일을 읽을 때 파일은 데이터베이스 디렉터리에 있거나 모두 읽을 수 있어야합니다. 또한 서버 파일에
LOAD DATA INFILE
을 사용하려면FILE
권한이 있어야합니다. Section 6.2.1, “Privileges Provided by MySQL”을 참조하십시오.LOCAL
로드 조작의 경우,secure_file_priv
시스템 변수가 비어 있지 않은 디렉토리 이름으로 설정된 경우,로드 될 파일은 해당 디렉토리에 있어야합니다.
LOCAL
을 사용하면 파일 내용이 클라이언트에서 서버로 연결을 통해 보내야하기 때문에 서버가 파일에 직접 액세스하는 것보다 약간 느립니다. 반면 로컬 파일을로드하는 데는FILE
특권이 필요하지 않습니다.
LOCAL
으로 기본 중복 키 처리 동작은IGNORE
이 지정된 경우와 동일합니다. 이는 서버가 작업 도중에 파일 전송을 중지 할 방법이 없기 때문입니다.IGNORE
에 대해서는이 섹션 뒷부분에서 자세히 설명합니다.
LOCAL
은 서버와 클라이언트가 모두 허용하도록 구성된 경우에만 작동합니다. 예를 들어mysqld
이--local-infile=0
으로 시작된 경우LOCAL
이 작동하지 않습니다. Section 6.1.6, “Security Issues withLOAD DATA LOCAL
”을 참조하십시오.
LOAD_FILE 또는 LOAD DATA INFILE 중 어떤 명령을 사용 하시겠습니까? – Devart