25.5.13 ndb_import — Импорт данных CSV в NDB
ndb_import импортирует данные в формате CSV, например, такие, что генерируются mysqldump --tab, непосредственно в NDB с использованием API NDB. ndb_import требует подключения к серверу управления NDB (ndb_mgmd), но не требует подключения к MySQL Server.
Использование
ndb_import db_name file_name options
ndb_import требует двух аргументов. db_name — имя базы данных, где находится таблица, в которую нужно импортировать данные; file_name — имя файла CSV, из которого нужно читать данные; это имя должно включать путь к файлу, если он не находится в текущем каталоге. Имя файла должно совпадать с именем таблицы; расширение файла, если оно есть, не учитывается.
ndb_import игнорирует пустые строки, которые считывает из файла CSV, за исключением случаев импорта одного столбца, когда пустое значение может быть использовано в качестве значения столбца. ndb_import обрабатывает это так же, как и оператор LOAD DATA.
ndb_import должен иметь возможность подключаться к серверу управления кластером NDB; по этой причине должно быть свободное [api] место в файле кластера config.ini.
Для дублирования существующей таблицы, использующей другой движок хранения, например, InnoDB, как таблицу NDB, используйте клиент mysql, чтобы выполнить оператор SELECT INTO
OUTFILE для экспорта существующей таблицы в файл CSV, затем выполнить оператор CREATE TABLE
LIKE для создания новой таблицы с такой же структурой, как и у существующей, а затем выполнить ALTER TABLE ...
ENGINE=NDB над новой таблицей; после этого вызовите в командной строке ndb_import для загрузки данных в новую таблицу NDB. Например, существующая таблица InnoDB с именем myinnodb_table в базе данных с именем myinnodb может быть экспортирована в таблицу NDB с именем myndb_table в базе данных с именем myndb, как показано здесь, предполагая, что вы уже вошли как пользователь MySQL с соответствующими привилегиями:
-
В клиенте mysql:
mysql>
USE myinnodb;mysql>SELECT * INTO OUTFILE '/tmp/myndb_table.csv'>FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\'>LINES TERMINATED BY '\n'>FROM myinnodbtable;mysql>CREATE DATABASE myndb;mysql>USE myndb;mysql>CREATE TABLE myndb_table LIKE myinnodb.myinnodb_table;mysql>ALTER TABLE myndb_table ENGINE=NDB;mysql>EXIT;Bye $>После создания целевой базы данных и таблицы работающий mysqld больше не нужен. Если хотите, вы можете остановить его с помощью mysqladmin shutdown или другим способом до продолжения.
-
В командной строке:
# if you are not already in the MySQL bin directory: $>
cd$>path-to-mysql-bin-dirndb_import myndb /tmp/myndb_table.csv --fields-optionally-enclosed-by='"' \--fields-terminated-by="," --fields-escaped-by='\\'Вывод должен быть похож на показанный здесь:
job-1 import myndb.myndb_table from /tmp/myndb_table.csv job-1 [running] import myndb.myndb_table from /tmp/myndb_table.csv job-1 [success] import myndb.myndb_table from /tmp/myndb_table.csv job-1 imported 19984 rows in 0h0m9s at 2277 rows/s jobs summary: defined: 1 run: 1 with success: 1 with failure: 0 $>
Все параметры, которые можно использовать с ndb_import, показаны в следующей таблице. Дополнительные описания следуют за таблицей.
-
Формат командной строки --abort-on-errorСоздать дамп памяти при любой фатальной ошибке; используется только для отладки.
-
Формат командной строки --ai-increment=#Тип Integer Значение по умолчанию 1Минимальное значение 1Максимальное значение 4294967295Для таблицы со скрытым первичным ключом укажите приращение автоинкремента, как это делает системная переменная
auto_increment_incrementв MySQL Server. -
Формат командной строки --ai-offset=#Тип Integer Значение по умолчанию 1Минимальное значение 1Максимальное значение 4294967295Для таблицы со скрытым первичным ключом укажите смещение автоинкремента. Аналогично системной переменной
auto_increment_offset. -
Формат командной строки --ai-prefetch-sz=#Тип Integer Значение по умолчанию 1024Минимальное значение 1Максимальное значение 4294967295Для таблицы со скрытым первичным ключом укажите количество значений автоинкремента, которые предварительно извлекаются. Ведет себя так же, как системная переменная
ndb_autoincrement_prefetch_szв MySQL Server. -
Формат командной строки --character-sets-dir=pathКаталог, содержащий кодировки символов.
-
Формат командной строки --connections=#Тип Integer Значение по умолчанию 1Минимальное значение 1Максимальное значение 4294967295Количество соединений кластера для создания.
-
Формат командной строки --connect-retries=#Тип Integer Значение по умолчанию 12Минимальное значение 0Максимальное значение 12Количество попыток повторного подключения перед отказом.
-
Формат командной строки --connect-retry-delay=#Тип Integer Значение по умолчанию 5Минимальное значение 0Максимальное значение 5Количество секунд ожидания между попытками связаться с сервером управления.
-
Формат командной строки --connect-string=connection_stringТип String Значение по умолчанию [none]То же самое, что и
--ndb-connectstring. -
Формат командной строки --continueПри сбое задания продолжить выполнение следующего задания.
-
Формат командной строки --core-fileЗаписать файл памяти при ошибке; используется при отладке.
-
--csvopt=stringФормат командной строки --csvopt=optsТип String Значение по умолчанию [none]Предоставляет сокращенный метод для установки типичных параметров импорта CSV. Аргумент этого параметра представляет собой строку, состоящую из одного или нескольких следующих параметров:
c: Поля разделяются запятойd: Использовать значения по умолчанию, за исключением случаев, когда они переопределены другим параметромn: Строки заканчиваются на\nq: Поля могут быть заключены в двойные кавычки (")r: Строка заканчивается на\r
Порядок параметров, используемых в аргументе этого параметра, обрабатывается таким образом, что самый правый параметр всегда имеет приоритет над любыми потенциально конфликтующими параметрами, которые уже были использованы в одном и том же значении аргумента. Это также относится к любым дубликатам данного параметра.
Этот параметр предназначен для использования в тестировании в условиях, когда трудно передавать escape-последовательности или кавычки.
-
Формат командной строки --db-workers=#Тип Integer Значение по умолчанию 4Минимальное значение 1Максимальное значение 4294967295Количество потоков на каждый узел данных, выполняющих операции базы данных.
-
Формат командной строки --defaults-file=pathТип String Значение по умолчанию [none]Читать параметры по умолчанию только из указанного файла.
-
Формат командной строки --defaults-extra-file=pathТип String Значение по умолчанию [none]Прочитать указанный файл после глобальных файлов.
-
Формат командной строки --defaults-group-suffix=stringТип String Значение по умолчанию [none]Также читает группы с concat(group, suffix).
-
--errins-type=nameФормат командной строки --errins-type=nameТип Enumeration Значение по умолчанию [none]Допустимые значения stopjobstopallsighupsigintlistТип вставки ошибки; используйте
listв качестве значенияname, чтобы получить все возможные значения. Эта опция используется только для целей тестирования. -
Формат командной строки --errins-delay=#Тип Integer Значение по умолчанию 1000Минимальное значение 0Максимальное значение 4294967295Единица измерения ms Задержка вставки ошибки в миллисекундах; добавляется случайное изменение. Эта опция используется только для целей тестирования.
-
--fields-enclosed-by=charФормат командной строки --fields-enclosed-by=charТип String Значение по умолчанию [none]Это работает так же, как опция
FIELDS ENCLOSED BYдля оператораLOAD DATA, указывая символ, который должен интерпретироваться как кавычки для значений полей. Для CSV-ввода это то же самое, что и--fields-optionally-enclosed-by. -
--fields-escaped-by=nameФормат командной строки --fields-escaped-by=charТип String Значение по умолчанию \Укажите escape-символ так же, как опция
FIELDS ESCAPED BYдля оператора SQLLOAD DATA. -
--fields-optionally-enclosed-by=charФормат командной строки --fields-optionally-enclosed-by=charТип String Значение по умолчанию [none]Это работает так же, как опция
FIELDS OPTIONALLY ENCLOSED BYдля оператораLOAD DATA, указывая символ, который должен интерпретироваться как необязательные кавычки для значений полей. Для CSV-ввода это то же самое, что и--fields-enclosed-by. -
Формат командной строки --fields-terminated-by=charТип String Значение по умолчанию \tЭто работает так же, как опция
FIELDS TERMINATED BYдля оператораLOAD DATA, указывая символ, который должен интерпретироваться как разделитель полей. -
Формат командной строки --helpОтобразить справку и выйти.
-
Формат командной строки --idlesleep=#Тип Integer Значение по умолчанию 1Минимальное значение 1Максимальное значение 4294967295Единица измерения ms Количество миллисекунд для ожидания выполнения дополнительной работы.
-
Формат командной строки --idlespin=#Тип Integer Значение по умолчанию 0Минимальное значение 0Максимальное значение 4294967295Количество попыток перед переходом в спящий режим.
-
Формат командной строки --ignore-lines=#Тип Integer Значение по умолчанию 0Минимальное значение 0Максимальное значение 4294967295Заставляет ndb_import игнорировать первые
#строки входного файла. Это может быть использовано для пропуска заголовка файла, который не содержит никаких данных. -
--input-type=nameФормат командной строки --input-type=nameТип Enumeration Значение по умолчанию csvДопустимые значения randomcsvУстанавливает тип входных данных. Значение по умолчанию —
csv;randomпредназначено только для целей тестирования. . -
Формат командной строки --input-workers=#Тип Integer Значение по умолчанию 4Минимальное значение 1Максимальное значение 4294967295Устанавливает количество потоков, обрабатывающих входные данные.
-
Формат командной строки --keep-stateПо умолчанию ndb_import удаляет все файлы состояния (кроме непустых файлов
*.rej) по завершении задания. Укажите эту опцию (аргумент не требуется), чтобы принудительно сохранить все файлы состояния.
-
Формат командной строки --lines-terminated-by=charТип String Значение по умолчанию \nРаботает аналогично опции
LINES TERMINATED BYдля оператораLOAD DATA, указывая символ, который интерпретируется как конец строки. -
Формат командной строки --log-level=#Тип Integer Значение по умолчанию 0Минимальное значение 0Максимальное значение 2Выполняет внутреннее логирование на заданном уровне. Эта опция предназначена в первую очередь для внутреннего и разработческого использования.
Только в отладочных сборках NDB уровень логирования может быть установлен с помощью этой опции до максимума 4.
-
Формат командной строки --login-path=pathТип String Значение по умолчанию [none]Читает заданный путь из файла входа.
-
Формат командной строки --no-login-pathsПропускает чтение параметров из файла пути входа.
-
Формат командной строки --max-rows=#Тип Integer Значение по умолчанию 0Минимальное значение 0Максимальное значение 4294967295Единица измерения bytes Импортировать только это количество строк входных данных; значение по умолчанию равно 0, что импортирует все строки.
-
Формат командной строки --missing-ai-column='name'Тип Boolean Значение по умолчанию FALSEЭтот параметр может использоваться при импорте одной таблицы или нескольких таблиц. При его использовании это указывает на то, что импортируемый CSV-файл не содержит никаких значений для столбца
AUTO_INCREMENT, и что ndb_import должен предоставить их; если параметр используется, и столбецAUTO_INCREMENTсодержит какие-либо значения, операция импорта не может быть выполнена. -
Формат командной строки --monitor=#Тип Integer Значение по умолчанию 2Минимальное значение 0Максимальное значение 4294967295Единица измерения bytes Периодически выводит состояние запущенной задачи, если что-то изменилось (состояние, отклоненные строки, временные ошибки). Установите значение 0, чтобы отключить этот отчет. Установка значения 1 выведет любое обнаруженное изменение. Более высокие значения снижают частоту этого отчета о состоянии.
-
Формат командной строки --ndb-connectstring=connection_stringТип String Значение по умолчанию [none]Устанавливает строку соединения для подключения к ndb_mgmd. Синтаксис:
[nodeid=. Переопределяет записи вid;][host=]hostname[:port]NDB_CONNECTSTRINGиmy.cnf. -
Формат командной строки --ndb-mgm-tls=levelТип Enumeration Значение по умолчанию relaxedДопустимые значения relaxedstrictУстанавливает уровень поддержки TLS, необходимый для подключения к серверу управления; одно из
relaxedилиstrict.relaxed(по умолчанию) означает, что попытка соединения TLS предпринимается, но успех не обязателен;strictозначает, что для подключения требуется TLS. -
Формат командной строки --ndb-mgmd-host=connection_stringТип String Значение по умолчанию [none]То же, что и
--ndb-connectstring. -
Формат командной строки --ndb-nodeid=#Тип Integer Значение по умолчанию [none]Устанавливает идентификатор узла для этого узла, переопределяя любой идентификатор, установленный
--ndb-connectstring. -
--ndb-optimized-node-selectionФормат командной строки --ndb-optimized-node-selectionВключает оптимизацию для выбора узлов для транзакций. Включено по умолчанию; используйте
--skip-ndb-optimized-node-selectionдля отключения. -
Формат командной строки --ndb-tls-search-path=listТип Path name Значение по умолчанию (Unix) $HOME/ndb-tlsЗначение по умолчанию (Windows) $HOMEDIR/ndb-tlsУказывает список каталогов для поиска файла CA. На платформах Unix имена каталогов разделяются двоеточиями (
:); в системах Windows в качестве разделителя используется символ точки с запятой (;). Ссылка на каталог может быть относительной или абсолютной; она может содержать одну или несколько переменных среды, каждая из которых обозначается предшествующим знаком доллара ($) и расширяется перед использованием.Поиск начинается с самого левого именованного каталога и продолжается слева направо, пока не будет найден файл. Пустая строка обозначает пустой путь поиска, что приводит к сбою всех поисков. Строка, состоящая из одной точки (
.), указывает, что путь поиска ограничен текущим рабочим каталогом.Если путь поиска не указан, используется встроенное значение по умолчанию. Это значение зависит от используемой платформы: в Windows это
\ndb-tls; на других платформах (включая Linux) это$HOME/ndb-tls. Это можно переопределить, скомпилировав NDB Cluster с использованием-DWITH_NDB_TLS_SEARCH_PATH.
-
Формат командной строки --no-asynchВыполнять операции с базой данных пакетами, в отдельных транзакциях.
-
Формат командной строки --no-defaultsНе считывать параметры по умолчанию из любого файла параметров, кроме файла входа.
-
Формат командной строки --no-hintНе использовать подсказки ключа распределения для выбора узла данных.
-
Формат командной строки --opbatch=#Тип Integer Значение по умолчанию 256Минимальное значение 1Максимальное значение 4294967295Единица измерения bytes Установить ограничение на количество операций (включая операции с BLOB), а значит, и на количество асинхронных транзакций в каждом пакете выполнения.
-
Формат командной строки --opbytes=#Тип Integer Значение по умолчанию 0Минимальное значение 0Максимальное значение 4294967295Единица измерения bytes Установить ограничение на количество байт в каждом пакете выполнения. Использовать 0 для отсутствия ограничения.
-
--output-type=nameФормат командной строки --output-type=nameТип Enumeration Значение по умолчанию ndbДопустимые значения nullУстановить тип вывода.
ndbявляется значением по умолчанию.nullиспользуется только для тестирования. -
Формат командной строки --output-workers=#Тип Integer Значение по умолчанию 2Минимальное значение 1Максимальное значение 4294967295Установить количество потоков, обрабатывающих вывод или передающих операции с базой данных.
-
Формат командной строки --pagesize=#Тип Integer Значение по умолчанию 4096Минимальное значение 1Максимальное значение 4294967295Единица измерения bytes Выровнять буферы ввода-вывода по заданному размеру.
-
Формат командной строки --pagecnt=#Тип Integer Значение по умолчанию 64Минимальное значение 1Максимальное значение 4294967295Установить размер буферов ввода-вывода как кратное значение размера страницы. Рабочий процесс ввода CSV выделяет буфер удвоенного размера.
-
Формат командной строки --polltimeout=#Тип Integer Значение по умолчанию 1000Минимальное значение 1Максимальное значение 4294967295Единица измерения ms Установить время ожидания для каждого опроса завершенных асинхронных транзакций; опрос продолжается до тех пор, пока не будут завершены все запросы или пока не произойдет ошибка.
-
Формат командной строки --print-defaultsВывести список аргументов программы и завершить работу.
-
Формат командной строки --rejects=#Тип Integer Значение по умолчанию 0Минимальное значение 0Максимальное значение 4294967295Ограничить количество отклоненных строк (строки с постоянными ошибками) при загрузке данных. Значение по умолчанию равно 0, что означает, что любая отклоненная строка приводит к фатальной ошибке. Любые строки, из-за которых превышается ограничение, добавляются в файл
.rej.Ограничение, накладываемое этим параметром, действует в течение текущего запуска. Запуск, возобновленный с помощью
--resume, считается “новым” запуском в этом отношении. -
Формат командной строки --resumeЕсли задание прервано (из-за временной ошибки базы данных или при прерывании пользователем), возобновить обработку с любых строк, которые еще не обработаны.
-
Формат командной строки --rowbatch=#Тип Integer Значение по умолчанию 0Минимальное значение 0Максимальное значение 4294967295Единица измерения rows Установить ограничение на количество строк в очереди строк. Использовать 0 для отсутствия ограничения.
-
Формат командной строки --rowbytes=#Тип Integer Значение по умолчанию 262144Минимальное значение 0Максимальное значение 4294967295Единица измерения bytes Установить ограничение на количество байт в очереди строк. Использовать 0 для отсутствия ограничения.
-
Формат командной строки --statsСохраняет информацию об опциях, связанных с производительностью и другими внутренними статистическими данными, в файлах с именами
*.stoи*.stt. Эти файлы всегда сохраняются при успешном завершении (даже если--keep-stateне указан). -
--state-dir=nameФормат командной строки --state-dir=pathТип Строка Значение по умолчанию .Указывает место для записи файлов состояния (
,tbl_name.map,tbl_name.rejиtbl_name.res), создаваемых в процессе работы программы; по умолчанию используется текущий каталог.tbl_name.stt -
Формат командной строки --table=nameТип Строка Значение по умолчанию [input file base name]По умолчанию, ndb_import пытается импортировать данные в таблицу, имя которой является базовым именем CSV-файла, из которого считываются данные. Вы можете изменить выбор имени таблицы, указав его с помощью опции
--table(сокращенная форма-t). -
Формат командной строки --tempdelay=#Тип Целое число Значение по умолчанию 10Минимальное значение 0Максимальное значение 4294967295Единица измерения мс Количество миллисекунд для ожидания после временных ошибок.
-
Формат командной строки --temperrors=#Тип Целое число Значение по умолчанию 0Минимальное значение 0Максимальное значение 4294967295Количество раз, когда транзакция может завершиться неудачно из-за временной ошибки в каждой группе выполнения. По умолчанию 0, что означает, что любая временная ошибка является фатальной. Временные ошибки не добавляют строк в файл
.rej. -
--verbose,-vФормат командной строки --verbose[=#]Тип Булево Значение по умолчанию falseВключить подробный вывод.
-
Формат командной строки --usageОтобразить текст справки и выйти; то же, что и
--help. -
Формат командной строки --versionОтобразить информацию о версии и выйти.
Как и с LOAD DATA, опции форматирования полей и строк должны соответствовать тем, которые использовались при создании CSV-файла, независимо от того, был ли он создан с помощью SELECT INTO ...
OUTFILE или каким-либо другим способом. Нет эквивалента инструкции LOAD DATA опции STARTING WITH.
© 2025 Oracle
Licensed under the GPLv2 License.