KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Виктор Гольцман - MySQL 5.0. Библиотека программиста

Виктор Гольцман - MySQL 5.0. Библиотека программиста

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Виктор Гольцман, "MySQL 5.0. Библиотека программиста" бесплатно, без регистрации.
Перейти на страницу:

Примечание

Вместо отсутствующего значения необходимо при заполнении файла ввести символы «N». Тогда в базу данных будет загружено неопределенное значение (NULL).

3. Для сохранения файла с данными нажмите комбинацию клавиш Ctrl+S. В стандартном окне Windows Сохранить как выберите папку, в которую нужно поместить файл (например, C: data). Введите имя файла (например, Customers. txt) и нажмите кнопку Сохранить.

4. Для загрузки данных из созданного файла выполните команду

LOAD DATA LOCAL INFILE 'C:/data/Customers.txt'

INTO TABLE Customers

CHARACTER SET cp1251;

Обратите внимание, что в пути к файлу необходимо использовать прямую косую черту, а не обратную.

Файл Customers.txt мы создали в формате, принятом по умолчанию в MySQL, поэтому при загрузке потребовалось указать только один дополнительный параметр – кодировку Windows.

Однако если вам нужно загрузить в таблицу данные из текстового файла, который был создан в другом формате (например, выгружен из другой базы данных), могут потребоваться и другие параметры. Полностью команда LOAD DATA имеет следующий вид:

LOAD DATA [LOCAL] INFILE 'Путь и имя файла'

[REPLACE или IGNORE]

INTO TABLE <Имя таблицы>

CHARACTER SET <Имя кодировки>

[

FIELDS

[TERMINATED BY <Разделитель значений в строке>]

[[OPTIONALLY]

ENCLOSED BY <Символ, в который заключены значения>]

[ESCAPED BY <Экранирующий символ>]

]

[

LINES

[STARTING BY <Префикс строки>]

[TERMINATED BY <Разделитель строк>]

]

[IGNORE <Количество строк в начале файла> LINES]

[(<Список столбцов>)]

[SET <Имя столбца> = <Выражение>,…];

В этой команде вы можете использовать следующие параметры.

• LOCAL – укажите этот параметр, если файл с данными находится на клиентском компьютере (то есть на том компьютере, где работает клиентское приложение, в котором вы и вводите эту команду). Если файл расположен на компьютере, где работает сервер MySQL, параметр LOCAL указывать не нужно.

• 'Путь и имя файла' – введите полный путь к файлу, например C:/Data/ mytable.txt (необходимо использовать прямую косую черту вместо обратной, принятой в Windows).

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

• CHARACTER SET <Имя кодировки> – укажите кодировку данных в файле. Этот параметр используется для корректного преобразования кодировок. Предполагается, что все данные в файле имеют одну и ту же кодировку....

Внимание!

Загрузка данных в кодировке UTF-8 может работать некорректно вследствие переменного количества байтов на символ в этой кодировке. Рекомендуем файл с данными в этой кодировке перед загрузкой преобразовать в какую-либо однобайтовую кодировку. Например, откроем файл с помощью программы Блокнот, в меню Файл выберем команду Сохранить как, а затем в стандартном окне Windows Сохранить как в поле Кодировка выберем из списка значение ANSI и нажмем кнопку Сохранить. После этого загрузим этот файл, указав в команде LOAD DATA параметр CHARACTER SET cp1251.

• FIELDS – укажите этот параметр, чтобы сообщить программе MySQL, в каком формате заданы значения в файле:

– TERMINATED BY <Разделитель значений в строке> – укажем символ, разделяющий значения в строке файла. Например, если значения разделены запятыми, укажем параметр TERMINATED BY, если значения разделены символами табуляции – TERMINATED BY t', если значения разделены косой чертой – TERMINATED BY /;

– ENCLOSED BY <Символ, в который заключены значения> – укажем символ, которым обрамляются значения. Например, если все значения заключены в одинарные кавычки, укажем ENCLOSED BY , если в одинарные кавычки заключены только символьные значения, укажем OPTIONALLY ENCLOSED BY , а если никакие значения не обрамляются никакими символами, укажем ENCLOSED BY или вообще опустим этот параметр;

– ESCAPED BY <Экранирующий символ> – укажем экранирующий символ (его также называют escape-символом). Этот символ сообщает программе MySQL, что следующий за ним символ нужно интерпретировать особым образом. А именно, обычный символ, следующий после экранирующего, будет рассматриваться как специальный символ, а специальный символ, наоборот, – как обычный символ.

Чаще всего экранирующим символом служит обратная косая черта, и в этом случае зададим значение ESCAPED BY \. Тогда, например, записанное в файле значение «N» будет прочитано и загружено в базу данных как NULL. Другой пример: если значения в файле разделены запятыми, то экранирующий символ помещается перед запятой, которая должна восприниматься как часть значения, а не как разделитель, то есть последовательность символов «,» интерпретируется как символ запятой в значении.

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

• LINES – укажите этот параметр, чтобы сообщить программе MySQL, в каком формате заданы строки в файле:

– STARTING BY <Префикс строки> – укажем последовательность символов в начале каждой строки, которая должна игнорироваться программой вместе со всеми предшествующими символами. После префикса должны начинаться значения;

– TERMINATED BY <Разделитель строк> – укажем символ, которым заканчиваются строки. Например, если строки заканчиваются символом перевода строки, укажем параметр TERMINATED BY n', если символом возврата каретки – укажем TERMINATED BY r', если сочетанием этих символов – укажем TERMINATED BY rn', если нулевым байтом – укажем TERMINATED BY .

Если параметр LINES не указан, программа MySQL считает, что строки в файле не имеют префикса и заканчиваются символом перевода строки «n».

• IGNORE <Количество строк в начале файла> LINES – укажите этот параметр, если первые несколько строк в файле не содержат значений (иными словами, являются заголовком) и при загрузке их нужно пропустить.

• (<Список столбцов>) – перечислите столбцы таблицы, в которые будут загружаться данные. Это необходимо, если файл содержит данные не для всех столбцов таблицы или порядок следования значений в файле отличается от порядка столбцов в таблице.

• SET <Имя столбца> = <Выражение> – вы можете записывать в столбцы не только значения из файла, но и значения, вычисленные с помощью выражений. Для этого создадим одну или несколько переменных, присвоим им считанные из файла значения и запишем в столбец значение выражения, использующего эти переменные. Пусть, например, имеется таблица t1 с числовым столбцом c1 и столбцом с2 с типом TIMESTAMP. В столбец c1 нужно загрузить значение из файла, если это значение не превосходит 1000, либо NULL, если значение в файле больше 1000, а в столбец c2 при этом нужно записать текущую дату и время. Это можно сделать с помощью команды

LOAD DATA INFILE 'С:/DATA/t1.txt'

INTO TABLE t1 (@var1)

SET c1 = IF(@var1< = 1000,@var1,NULL), c2 = CURRENT_TIMESTAMP;

(о функции IF и о других функциях, используемых в выражениях, рассказывается в главе 3). Далее рассмотрим команду INSERT, с помощью которой также можно добавлять строки в таблицу.

Вставка отдельных строк

Для добавления одной или нескольких строк в таблицу можно использовать команду

INSERT [INTO] <Имя таблицы>

[(<Список столбцов>)]

VALUES

(<Список значений 1>),

(<Список значений 2>),

(<Список значений N>);

В команде INSERT используются следующие основные параметры.

• Имя таблицы, в которую добавляются строки.

• Список имен столбцов, для которых будут заданы значения. Если значения будут заданы для всех столбцов таблицы, то приводить список столбцов необязательно....

Примечание

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

• Значения, которые нужно добавить в таблицу. Значения могут указываться в одном из следующих форматов:

– набор значений для каждой добавляемой строки заключается в скобки. Набор значений внутри каждой пары скобок должен соответствовать указанному списку столбцов, а если список столбцов не указан, то упорядоченному списку всех столбцов, составляющих таблицу (список столбцов таблицы можно просмотреть с помощью команды DESCRIBE, см. подраздел «Другие команды для работы с таблицами»). Значения внутри набора, а также сами наборы отделяются друг от друга запятыми;

– символьные значения, а также значения даты и времени приводятся в одинарных кавычках. Для числовых значений кавычки необязательны. Десятичным разделителем для чисел с дробной частью служит точка. Время и даты вводятся, соответственно, в формате «YYYY-MM-DD» и «HH:MM:SS»;

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*