XML을 AWS RDS 인스턴스로 가져오기

XML을 AWS RDS 인스턴스로 가져오기

AWS RDS(mySql) 인스턴스에 일부 XML을 로드하려고 합니다.

XML은 다음과 같습니다. (ISO-3661 코드의 XML 덤프입니다.)

<?xml version="1.0" encoding="UTF-8"?>
<countries>
  <countries name="Afghanistan" alpha-2="AF" alpha-3="AFG" country-code="004" iso_3166-2="ISO 3166-2:AF" region-code="142" sub-region-code="034"/>
  <countries name="Åland Islands" alpha-2="AX" alpha-3="ALA" country-code="248" iso_3166-2="ISO 3166-2:AX"  region-code="150" sub-region-code="154"/>
  <countries name="Albania" alpha-2="AL" alpha-3="ALB" country-code="008" iso_3166-2="ISO 3166-2:AL" region-code="150" sub-region-code="039"/>
  <countries name="Algeria" alpha-2="DZ" alpha-3="DZA" country-code="012" iso_3166-2="ISO 3166-2:DZ" region-code="002" sub-region-code="015"/>

내가 실행하는 명령은 다음과 같습니다.

 LOAD XML LOCAL INFILE '/var/www/ISO-3166_SMS_Country_Codes.xml' INTO TABLE `ISO-3661-codes`(`name`,`alpha-2`,`alpha-3`,`country-code`,`region-code`,`sub-region-code`);

내가받는 오류 메시지는 다음과 같습니다.

오류 1148(42000): 이 MySQL 버전에서는 사용된 명령이 허용되지 않습니다.

참조된 infile이 존재합니다. 명령을 실행하기 전에 데이터베이스를 선택했으며 데이터베이스에 대한 적절한 권한을 가지고 있습니다. 데이터베이스 테이블의 열 이름은 xml 필드 이름과 정확히 일치합니다.

답변1

여기에는 두 가지가 있습니다. 하나는 서버 측이고 다른 하나는 클라이언트 측입니다.

서버(AWS RDS)에서 매개변수 그룹이 local_infile로 설정되어 있는지 확인하세요 1. 기본적으로 RDSland에서는 5.1 및 5.5용으로 활성화되어 있습니다.

둘째, mysql 명령줄을 사용한다고 가정하고 local-infile 옵션을 사용하여 시작합니다.

mysql --local-infile -hhostname -uusername -p databasename

my.cnf에서 local-infile을 설정할 수도 있습니다. 이 경우에는 컴퓨터에 연결되어 있습니다. YMMV, IANAL, FSCK 등

메모이 5.1 문서"기본적으로 바이너리 배포판의 모든 MySQL 클라이언트와 라이브러리는 MySQL 3.23.48 및 이전 버전과 호환되도록 --enable-local-infile 옵션으로 컴파일됩니다." 적어도 최근 배포판에서는 그렇지 않은 것 같습니다.

$ mysql --help | grep ^local-infile  # Ubuntu 12.04
local-infile                      FALSE
$ mysql --help | grep ^local-infile  # Ubuntu 12.04, fairly stock AWS AMI
local-infile                      FALSE
$ mysql --help | grep ^local-infile  # OSX 10.8
local-infile                      FALSE

관련 정보