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

Импорт 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.

решение1

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

На сервере (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

Связанный контент