Платформы корпоративных информационных систем


LOAD



LOAD


LOAD DATA [LOCAL] INFILE file [REPLACE|IGNORE] INTO TABLE table [delimiters] [(columns)]

Читает текстовый файл и вставляет данные в таблицу. Такой метод ввода данных гораздо быстрее, чем использование многих операторов INSERT. Хотя эта команда может быть вызвана с любого клиента, как и все остальные операторы SQL, считается, что указанный в предложении файл находится на сервере. Если путь к файлу полностью не указан, MySQL ищет его в том же каталоге, где расположена база данных. В версии MySQL3.22, при наличии спецификатора LOCAL, файл будет прочитан из локальной файловой системы клиентской машины.

Без указанных разделителей (delimiters) оператор LOAD DATA INFILE будет считать, что текстовые поля в файле разделены символом табуляции, особые символы набраны через обратную косую черту (так называемый бэкслэш - «\»), и строки заканчиваются символом конца строки.

Также можно указать собственные разделители с помощью следующих ключевых слов:

FIELDS TERMINATED BY 'с'

Определяет символ, используемый для разделения полей. Чтобы указать специальные символы, можно использовать стандартные управляющие коды языка С. Значение может содержать более одного символа. Например, FIELDS TERMINATED BY ', ' означает файл, разделенный запятыми, a FIELDS TERMINATED BY '\t' обозначает разделения табуляцией. Разделение табуляцией является значением по умолчанию.

FIELDS ENCLOSED BY 'с'

Определяет символ для объединения символьной строки. Например, FIELD ENCLOSED BY '' будет означать, что строка, содержащая "this, value", "this", "value" , будет записана в базу как три поля: "this,value", "this", и "value". По умолчанию считается, что в файле не используются кавычки.

FIELDS ESCAPED BY 'с'

Определяет символ, указывающий на то, что символ, следующий за ним, является простым, даже если обычно он считался бы управляющим. Например, FIELDS ESCAPED BY ' приведет к тому, что строка "First, Second",Third, Fourth" будет прочитана как три поля: "First", "Second,Third" и "Fourth" . Исключением являются символы нуля. Например, если FIELDS ESCAPED BY имеет значение обратной косой черты, то \0 указывает на ASCII NULL (символ с номером 0), и \N указывает на значение null в MySQL. Символ обратной косой черты является значением по умолчанию для этого параметра. Обратите внимание, что MySQL рассматривает его как спецсимвол. И если вам необходимо использовать его в этом выражении, следует отделить его еще одной обратной косой чертой: FIELDS ESCAPED BY '\\' .

LINES TERMINATED BY 'C'

Определяет символ для указания на начало новой строки. Значением могут быть несколько символов. Например, при LINES TERMINATED BY '.', файл, состоящий из а, b, с, d, e, f, g, h, k. , будет прочитан как три отдельные записи, с тремя полями в каждой. По умолчанию используется символ новой строки. Это означает, что по умолчанию MySQL считает каждую строку отдельной записью.

Ключевое слово FIELDS следует использовать только для всего выражения. Например:

LOAD DATA INFILE data.txt FIELDS TERMINATED BY ','ESCAPED BY '\\'.

По умолчанию, если прочитанное из файла значение совпадает с уже имеющимся и является при этом частью уникального ключа, будет выдана ошибка. Если в выражении есть ключевое слово REPLACE, значение из файла заменит имеющееся в таблице. Ключевое слово IGNORE приведет к игнорированию нового значения и сохранению старого.

Найденное в файле слово NULL считается указанием на пустое значение, если только оно не выделено символами, указанными в команде

FIELDS ENCLOSED BY .

Использование одного символа для разных разделителей может смутить MySQL. Например, FIELDS TERMINATED BY ',' ENCLOSED BY ', ' приведет к непредсказуемому поведению.

Если задан список столбцов, данные будут записаны именно в эти поля. Если столбцы не указаны, число полей в файле с данными должно совпадать с числом полей в таблице, и они должны идти в том же порядке, что и поля в таблице.

Для выполнения этого оператора вы должны обладать правами SELECT и INSERT.









Начало  Назад  Вперед


Книжный магазин