一、導入.sql文件
1.mysql命令導入數據
基本語法:mysql -h伺服器地址 -u用戶名 -p 資料庫名< 要導入的資料庫文件路徑
例:導入G:/mydb.sql
2.source命令導入數據
基本語法:source 資料庫文件路徑;
例:導入G:/mydb2.sql
二、導入.csv/.txt文件
1.load data 導入數據
基本語法:
load data [low_priority] [local] infile 'file_name txt' [replace|ignore]
into table tbl_name
[fields
[terminated by'\t']
[optionally] enclosed by '']
[escaped by'\' ]]
[lines terminated by '\n']
[ignore n lines]
[(col_name, )]
low_priority:load data語句的執行被推遲到沒有其他客戶讀取表之後。
local:從客戶主機上按路徑讀取文件。若省略,則文件在伺服器上按路徑讀取文件。
replace|ignore:控制對現有的唯一鍵記錄的重複的處理。若指定replace,刪除原有行,插入新行。若指定ignore,則保留原有行,跳過相同值的新行。若不指定,則找到重複鍵值時,出現一個錯誤,且文本文件的餘下部分將被忽略。
fields terminated by:指定欄位間的分隔符,默認'\t'。
lines terminated by:指定每行結尾的字符,默認'\n'。
如果fields和lines兩個同時被指定,fields必須在lines之前。
fields [optionally] enclosed by:指定欄位包圍字符,若省略optionally,則所有的欄位由enclosed by字符包圍,反之,則enclosed by字符僅被用於包圍char和varchar欄位。
fields escaped by:指定轉義字符,默認'\'
ignore n lines:忽視文件的前幾行
(col_name, ):指定插入數據時表中列的順序,若省略,則按默認順序插入數據。
例:向user表插入文件'G:/用戶表.txt'中數據。
用戶表.txt中數據如下:
數據導入:
註:character set utf8/gbk這個字符集必須要寫,若省略,可能會出現亂碼或者只導入一部分數據。
2.mysqlimport導入數據
基本語法:mysqlimport -h伺服器地址 -u 用戶名 -p [--local] 資料庫名 文件路徑 [options]
options常用選項:
-d or --delete:導入數據前刪除原數據表中的所有信息。
-f or --force:不管是否遇到錯誤,mysqlimport將強制繼續插入數據
-i or --ignore:導入數據時跳過有相同唯一關鍵字的新行,保留原有行。
-r or -replace:用新行代替原數據表中有相同唯一關鍵字的記錄。
-l or -lock-tables:導入數據前鎖住原數據表。
--fields-terminated-by=name:設置欄位間的分隔符,默認'\t'
--fields-optionally-enclosed-by=name:設置欄位包圍字符
--fields-escaped-by=name:設置轉義字符,默認'\'
--lines-terminated-by=name:設置每行結尾的字符,默認'\n'
--ignore-lines=n:忽視文件的前幾行
mysqlimport命令無需指定表名,而是根據文件名作為表名,該數據表在導入數據時必須存在。
--local:是在本地計算機中查找文件時使用(指定--local後,文件可以放在任何地方進行導入,否則文件只能放在mysql的data目錄下或者指定絕對路徑)。
例:向user2表插入G:\user2.csv文件中數據。
user2.csv中數據如下:
數據導入: