MySQLCрасширения
языка SQL
265
> INTO OUTFILE 'C:\\TEMP\\emp_list_atsign.txt'
> FIELDS TERMINATED BY '|'
> LINES TERMINATED BY '@'
> FROM employee;
Query OK, 18 rows affected (0.03 sec)
Поскольку в файле
emp_list_atsign.txt
для разделения записей не ис
пользуется
символ новой строки, весь файл выглядит как одна длин
ная текстовая строка, в которой каждая запись отделена символом
'@'
:
1|Michael|Smith|20010622@2|Susan|Barker|20020912@3|Robert|Tyler|
20000209@4|Susan|Hawthorne|20020424@5|John|Gooding|20031114@6|Helen|
Fleming|20040317@7|Chris|Tucker|20040915@8|Sarah|Parker|20021202@9|
Jane|Grossman|20020503@10|Paula|Roberts|20020727@11|Thomas|Ziegler|
20001023@12|Samantha|Jameson|20030108@13|John|Blake|20000511@14|
Cindy|Mason|20020809@15|Frank|Portman|20030401@16|Theresa|Markham|
20010315@17|Beth|Fowler|20020629@18|Rick|Tulman|20021212@
Если понадобится сгенерировать файл
данных для загрузки в элек
тронную таблицу или рассылки в/за пределы организации, блок
into
outfile
обеспечит достаточную гибкость для создания файла любого
необходимого формата.
Сочетание выражений insert/update
Допустим, требуется создать таблицу для сбора информации о посеще
нии клиентами отделений банка. Таблица
должна содержать ID кли
ента, ID отделения и столбец
datetime
с датой и временем последнего
посещения отделения клиентом. Строки в таблицу добавляются вся
кий раз, когда клиент посещает определенное отделение. Но
если кли
ент уже был в этом отделении, следует просто обновить столбец
da
tetime
существующей строки. Вот описание таблицы:
CREATE TABLE branch_usage
(branch_id SMALLINT UNSIGNED NOT NULL,
cust_id
INTEGER UNSIGNED NOT NULL,
last_visited_on DATETIME,
CONSTRAINT pk_branch_usage PRIMARY KEY (branch_id, cust_id)
);
Кроме трех столбцов таблица
branch_usage
определяет ограничение пер
вичного
ключа для столбцов
branch_id
и
cust_id
. Следовательно, сервер
отклонит любую добавляемую в таблицу строку,
пара значений отде
ление/клиент которой уже есть в таблице.
Скажем, таблица создана, и клиент с ID 5 посещает главное отделение
(отделение с ID 1) за первую неделю три раза. После первого визита
в таблицу
branch_usage
можно
вставить запись, поскольку для клиента
с ID 5 и отделения с ID 1 записи еще нет:
mysql>
Достарыңызбен бөлісу: