1.說明
LOAD DATA INFILE語句用於高速地從一個文本文件中讀取行,並裝入一個表中。文件名稱必須為一個文字字符串。
標准語法:LOAD DATA LOCAL INFILE 'data.txt' INTO TABLE tbl_name
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '
'
IGNORE 1 LINES
語法說明: 將文件“data.txt”中的數據寫入“tbl_name”表中 字段以“,”結尾 無視“””雙引號(字段以雙引號包裹的情況,根據數據格式定義) 每一行數據以“
”結尾(針對於win環境,Linux不需要這條命令) 忽略第一行(可選)
如果您只想載入一個表的部分列,則應指定一個列清單:LOAD DATA LOCAL INFILE 'persondata.txt' INTO TABLE tbl_name (col1,col2);
文件的路徑如果指定了LOCAL,則被認為與連接的客戶端有關:
1.如果指定了LOCAL,則文件會被客戶主機上的客戶端讀取,並被發送到服務器。文件會被給予一個完整的路徑名稱,以指定確切的位置。如果給定的是一個相對的路徑名稱,則此名稱會被理解為相對於啟動客戶端時所在的目錄。
2.如果LOCAL沒有被指定,則文件必須位於服務器主機上,並且被服務器直接讀取。
當在服務器主機上為文件定位時,服務器使用以下規則:
1).如果給定了一個絕對的路徑名稱,則服務器使用此路徑名稱。 2).如果給定了帶有一個或多個引導組件的相對路徑名稱,則服務器會搜索相對於服務器數據目錄的文件。 3).如果給定了一個不帶引導組件的文件名稱,則服務器會在默認數據庫的數據庫目錄中尋找文件。
注意,這些規則意味著名為./myfile.txt的文件會從服務器數據目錄中被讀取,而名為myfile.txt的同樣的文件會從默認數據庫的數據庫目錄中讀取。
以下示例記錄我以不指定local,將文件上傳到服務器主機,並給絕對路徑為例2.准備工作:
1) 數據文件(test.csv) 格式
流水ID,日期,備注,收入,支出,餘額
234534654653,2016-07-04 11:12:58,可用金充值,1000.0,0.0,131016.97
234534654651,2016-06-30 10:44:07,可用金充值,2287.0,0.0,133075.01
234534654652,2016-06-16 16:24:20,可用金充值,850.0,0.0,132172.55
234534654654,2016-06-02 17:19:12,可用金充值,6861.0,0.0,142621.41
2) 根據數據文件創建數據庫表
3.操作
1) 把數據文件(以“test.csv”為例)上傳到Linux的tmp目錄(目錄隨便,我以tmp為例) 注意:如果是.csv格式文件,上傳之前另存為utf8格式,不要用中文命名。 2) 登錄MySQL,選擇數據庫,根據文件中的字段創建數據庫表(或者你已經有數據庫表)tabl_test 3) 登錄MySQL,選擇數據庫,執行數據導入
LOAD DATA INFILE '/tmp/test.csv'
INTO TABLE tabl_test
FIELDS TERMINATED BY ','
ignore 1 lines
(stream_id, date, comment, income, expend, total);
4) 沒有了~