### 3.3.3 將數據加載到表中
創建表之后需要填充數據. [`LOAD DATA`](https://dev.mysql.com/doc/refman/8.0/en/load-data.html) 和 [`INSERT`](https://dev.mysql.com/doc/refman/8.0/en/insert.html) 語句對此非常有用.
假設你的寵物記錄如下所示. (注意, MySQL 期望的日期為 `'YYYY-MM-DD'` 格式; 這可能和你的習慣不一樣.)
| name | owner | species | sex | birth | death |
|:---:|:---:|:---:|:---:|:---:|:---:|
| Fluffy | Harold | cat | f | 1993-02-04 | |
| Claws | Gwen | cat | m | 1994-03-17| |
| Buffy | Harold | dog | f | 1989-05-13| |
| Fang | Benny | dog | m | 1990-08-27 | |
| Bowser | Diane | dog | m | 1979-08-31 | 1995-07-29 |
| Chirpy | Gwen | bird | f | 1998-09-11 | |
| Whistler | Gwen | bird | | 1997-12-09 | |
| Slim | Benny | snake | m | 1996-04-29 | |
由于從空表開始, 填充它最簡單的方法就是創建一個文本文件, 其中包含動物的每一行, 然后用一條語句將文件的內容加載到表中.
你可以創建一個文本文件 `pet.txt`, 其中每行包含一條記錄, 值由制表符風格, 并按照 [`CREATE TABLE`](https://dev.mysql.com/doc/refman/8.0/en/create-table.html) 語句中列的順序給出. 對于缺失的值(例如未知性別或者仍然活著的動物的死亡日期), 可以使用 `NULL` 值. 要在文本文件中表示這些, 使用 `\N` (反斜線, 大寫字母 N). 例如, Whistler 鳥的記錄應該是這樣的(值之間的空格是一個制表符):
```text
Whistler Gwen bird \N 1997-12-09 \N
```
要將文本文件 `pet.txt` 加載到 `pet` 表中, 使用該語句:
```sql
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet;
```
如果你在 Windows 上使用 `\r\n` 作為行結束符的編輯器創建文件, 你應該使用如下語句:
```sql
mysql> LOAD DATA LOCAL INFILE '/path/pet.txt' INTO TABLE pet
LINES TERMINATED BY '\r\n';
```
(在運行 OS X 的蘋果機器上, 你可能希望使用 `LINES TERMINATED BY '\r'`.)
如果你愿意可以在 [`LOAD DATA`](https://dev.mysql.com/doc/refman/8.0/en/load-data.html) 語句中顯式的指定列值分隔符和行尾標記符. 這足以讓語句正確的讀取 `pet.txt` 文件.
如果語句失敗了, MySQL 安裝時可能沒有啟用本地文件功能. 參閱 [Section 6.1.6, “LOAD DATA LOCAL 安全問題”](https://dev.mysql.com/doc/refman/8.0/en/load-data-local.html), 有關如何更新的信息.
當你想一次添加一條新紀錄時, [`INSERT`](https://dev.mysql.com/doc/refman/8.0/en/insert.html) 語句非常有用. 最簡單的形式, 按照 [`CREATE TABLE`](https://dev.mysql.com/doc/refman/8.0/en/create-table.html) 語句中列的順序為每隔列提供值. 假設 Diane 得到了一只名叫做 “Puffball” 的新倉鼠. 你可以使用 [`INSERT`](https://dev.mysql.com/doc/refman/8.0/en/insert.html) 語句添加一條新紀錄, 如下所示:
```sql
mysql> INSERT INTO pet
VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
```
字符串和日期值在這里被指定為字符串被引號括起來. 同樣, 使用 [`INSERT`](https://dev.mysql.com/doc/refman/8.0/en/insert.html), 你可以使用 `NULL` 指令來表示缺失的值. 你不可以像是 [`LOAD DATA`](https://dev.mysql.com/doc/refman/8.0/en/load-data.html) 那樣使用 `\N`.
從這個例子, 你應該能夠看到在最初使用幾個 [`INSERT`](https://dev.mysql.com/doc/refman/8.0/en/insert.html) 語句而不是一個簡單的 [`LOAD DATA`](https://dev.mysql.com/doc/refman/8.0/en/load-data.html) 語句加載記錄時, 需要進行更多的輸入.
- 簡介
- 前言和法律條款
- 安裝和更新 MySQL
- 在 Linux 上安裝 MySQL
- 在 Linux 上使用 APT 庫安裝 MySQL
- 在 Linux 上使用 Docker 部署 MySQL
- 使用 Docker 部署 MySQL 服務器的基本步驟
- 使用 Docker 部署 MySQL 服務器的更多主題
- 教程
- 連接到服務器和從服務器斷開
- 輸入查詢
- 創建和使用數據庫
- 創建和選擇數據庫
- 創建表
- 將數據加載到表中
- 從表中檢索數據
- 選擇所有數據
- 選擇特定行
- 選擇指定列
- 行排序
- 日期計算
- 處理 NULL 值
- 模式匹配
- 計算行數
- 使用多個表
- 獲取數據庫和表的信息
- 在批處理模式使用 mysql
- 常見查詢示例
- 列的最大值
- 包含某一行最大值的記錄
- 每組中列的最大值
- 擁有某個字段的組間最大值的行
- 使用用戶自定義變量
- 使用外鍵
- 兩個鍵上搜索
- 計算每日訪問量
- 使用 AUTO_INCREMENT
- 在 Apache 中使用 MySQL
- MySQL 程序
- MySQL 客戶端程序
- mysql — MySQL 命令行客戶端
- 優化
- 優化概述
- 優化 SQL 語句
- 優化和索引
- 優化數據庫結構
- 優化 InnoDB 表
- 優化 MyISAM 表
- 優化 MEMORY 表
- 理解查詢執行計劃
- 控制查詢優化器
- 緩沖和緩存
- 優化鎖操作
- 優化 MySQL 服務器
- 測量性能 (Benchmarking)
- 檢查線程信息