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, включают опции для указания разделителей полей, экранирования и разделителей строк, и описаны позднее в этом разделе.
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.