Назад | Перейти на главную страницу

Импорт XML в экземпляр AWS RDS

Я пытаюсь загрузить некоторый xml в экземпляр AWS RDS (mySql).

XML выглядит так: (это XML-дамп кодов ISO-3661)

<?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.

Здесь есть две вещи. Один на стороне сервера, другой на стороне клиента.

На сервере (AWS RDS) проверьте свою группу параметров, чтобы убедиться, что local_infile установлен на 1. По умолчанию он включен в RDSland для версий 5.1 и 5.5.

Во-вторых, если вы используете командную строку mysql, запустите ее с параметром local-infile:

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

Вы также можете установить local-infile в своем my.cnf, хотя в этом случае он привязан к машине; YMMV, IANAL, FSCK и т. Д.

Заметка эта документация 5.1 говорит: «По умолчанию все клиенты и библиотеки MySQL в двоичных дистрибутивах скомпилированы с параметром --enable-local-infile, чтобы быть совместимыми с MySQL 3.23.48 и ранее». Похоже, что это не относится к недавним дистрибутивам, по крайней мере:

$ 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