mysql LOAD DATA INFILE使用官方地址
https://dev.mysql.com/doc/refman/5.7/en/load-data.html
LOAD DATA
[LOW_PRIORITY | CONCURRENT] [LOCAL]
INFILE ‘file_name’
[REPLACE | IGNORE]
INTO TABLE tbl_name
[PARTITION (partition_name [, partition_name] …)]
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY ‘string’]
[[OPTIONALLY] ENCLOSED BY ‘char’]
[ESCAPED BY ‘char’]
]
[LINES
[STARTING BY ‘string’]
[TERMINATED BY ‘string’]
]
[IGNORE number {LINES | ROWS}]
[(col_name_or_user_var
[, col_name_or_user_var] …)]
[SET col_name={expr | DEFAULT}
[, col_name={expr | DEFAULT}] …]
load data infile語句從一個(gè)文本/文件中以很高的速度寫入表中。
讀取位于服務(wù)器上的文本文件時(shí),文件必須處于數(shù)據(jù)庫目錄或可被所有人讀取
你指定關(guān)鍵詞low_priority,那么MySQL將會(huì)等到?jīng)]有其他人讀這個(gè)表的時(shí)候,才把插入數(shù)據(jù)
指定local關(guān)鍵詞,則表明從客戶主機(jī)讀文件。如果local沒指定,文件必須位于服務(wù)器上
eplace和ignore關(guān)鍵詞控制對(duì)現(xiàn)有的唯一鍵記錄的重復(fù)的處理
fields關(guān)鍵字指定了文件記段的分割格式
terminated by分隔符:意思是以什么字符作為分隔符
enclosed by字段括起字符
escaped by轉(zhuǎn)義字符
terminated by描述字段的分隔符,默認(rèn)情況下是tab字符()
enclosed by描述的是字段的括起字符。
escaped by描述的轉(zhuǎn)義字符。默認(rèn)的是反斜杠(backslash: )
1、win系統(tǒng)導(dǎo)入
批處理文件 import.bat 路徑為d:/files/bat
@ECHO OFF
/*dbhost執(zhí)行文件不在本服務(wù)器需要,本次忽略*/
@SET dbhost=主機(jī)名(例如:127.0.0.1)
/*數(shù)據(jù)庫賬號(hào)名稱*/
@SET dbuser=***
/*數(shù)據(jù)庫密碼*/
@SET dbpasswd=****
@SET sqlpath=%~dp0
//需要執(zhí)行的sql語句
@set sqlfile=demo.sql
/*未配置環(huán)境變量時(shí)加下下面兩句*/
@set MySQL_HOME=C:MySQL5.7.26@set PATH=%MySQL_HOME%bin;%PATH%
/*連接MySQL數(shù)據(jù)庫并執(zhí)行sql腳本 注意database為寫入數(shù)據(jù)庫名*/
@mysql -u%dbuser% -p%dbpasswd% database < %sqlpath%%sqlfile%
sq文件 demo.sql 路徑為d:/files/bat
/*D:filessimple.csv文件路徑 ,table為寫入數(shù)據(jù)表名,uname, phone數(shù)據(jù)庫字段名稱*/
LOAD DATA LOCAL INFILE ‘D:filessimple.csv’ INTO TABLE table FIELDS TERMINATED BY ‘,’ ENCLOSED BY ‘”‘ LINES TERMINATED BY ‘r’ IGNORE 1 LINES (uname, phone);
/*退出*/
quit
simple.csv
php執(zhí)行批處理
$shell = “d: && cd d:/files/bat && import.bat”;system($shell,$status);
if( $status ){
echo “執(zhí)行失敗”;
} else {
echo “執(zhí)行成功”;
}
注意如果system執(zhí)行失敗
編輯php.ini查找 disable_functions 將等號(hào)后面的 system 去掉即可。其他人自行查資料
注意導(dǎo)入前開啟mysql local_infile
開啟local_infile
2、linux系統(tǒng)導(dǎo)入
linux導(dǎo)入比較簡(jiǎn)單:
注意 ***處填寫數(shù)據(jù)庫賬號(hào),****處填寫數(shù)據(jù)庫密碼
table為寫入數(shù)據(jù)表名,uname, phone數(shù)據(jù)庫字段名
批處理文件 import.sh 路徑為d:/files/bat
#!/bin/bash
mysql -u*** -p**** <<EOF use zsj_datas; LOAD DATA LOCAL INFILE '/d/files/simple.csv' INTO TABLE table FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY 'r' IGNORE 1 LINES (uname, phone);EOF
php執(zhí)行批處理
$shell = ” cd /d/files/bat && sh ./ import.sh”;
system($shell,$status);
if( $status ){
echo “執(zhí)行失敗”;
} else {
echo “執(zhí)行成功”;
}
注意如果system執(zhí)行失敗
編輯php.ini查找 disable_functions 將等號(hào)后面的 system 去掉即可。其他錯(cuò)誤自行查資料
注意導(dǎo)入前開啟mysql local_infile
開啟local_infile