然后運(yùn)行下面的命令: bin/mysql –p < /home/mark/New_Data.sql 接著按提示輸入密碼,如果上面的文件中的語句沒有錯(cuò)誤,那么這些數(shù)據(jù)就被導(dǎo)入到了數(shù)據(jù)庫中。 命令行中使用LOAD DATA INFILE 從文件中導(dǎo)入數(shù)據(jù)到數(shù)據(jù)庫:
現(xiàn)在您可能會問自己,"究竟為什么我要輸入所有的這些SQL語句到文件中,然后通過程序運(yùn)行它們呢?” 這樣看起來好像需要大量的工作。很好,你這樣想很可能就對了。但是假如你有從所有這些命令中產(chǎn)生的log記錄呢?現(xiàn)在這樣就很棒,嗯,大多數(shù)數(shù)據(jù)庫都會自動產(chǎn)生數(shù)據(jù)庫中的事件記錄的log。而大部分log都包含有用過的原始的SQL命令。因此,如果您不能從您現(xiàn)在的數(shù)據(jù)庫中導(dǎo)出數(shù)據(jù)到新的mysql數(shù)據(jù)庫中使用,那么您可以使用log和mysql的批處理特性,來快速且方便地導(dǎo)入您地?cái)?shù)據(jù)。當(dāng)然,這樣就省去了打字的麻煩。 LOAD DATA INFILE
這是我們要介紹的最后一個(gè)導(dǎo)入數(shù)據(jù)到MySQL數(shù)據(jù)庫中的方法。這個(gè)命令與mysqlimport非常相似,但這個(gè)方法可以在mysql命令行中使用。也就是說您可以在所有使用API的程序中使用這個(gè)命令。使用這種方法,您就可以在應(yīng)用程序中導(dǎo)入您想要導(dǎo)入的數(shù)據(jù)。 使用這個(gè)命令之前,mysqld進(jìn)程(服務(wù))必須已經(jīng)在運(yùn)行。 啟動mysql命令行: bin/mysql –p 按提示輸入密碼,成功進(jìn)入mysql命令行之后,輸入下面的命令: USE Meet_A_Geek; LOAD DATA INFILE "/home/mark/data.sql" INTO TABLE Orders; 簡單的講,這樣將會把文件data.sql中的內(nèi)容導(dǎo)入到表Orders中,如mysqlimport工具一樣,這個(gè)命令也有一些可以選擇的參數(shù)。比如您需要把自己的電腦上的數(shù)據(jù)導(dǎo)入到遠(yuǎn)程的數(shù)據(jù)庫服務(wù)器中,您可以使用下面的命令: LOAD DATA LOCAL INFILE "C:\MyDocs\SQL.txt" INTO TABLE Orders; 上面的LOCAL參數(shù)表示文件是本地的文件,服務(wù)器是您所登陸的服務(wù)器。這樣就省去了使用ftp來上傳文件到服務(wù)器,MySQL替你完成了.
您也可以設(shè)置插入語句的優(yōu)先級,如果您要把它標(biāo)記為低優(yōu)先級(LOW_PRIORITY),那么MySQL將會等到?jīng)]有其他人讀這個(gè)表的時(shí)候,才把插入數(shù)據(jù)?梢允褂萌缦碌拿睿 LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" INTO TABLE Orders; 您也可以指定是否在插入數(shù)據(jù)的時(shí)候,取代或者忽略文件與數(shù)據(jù)表中重復(fù)的鍵值。替代重復(fù)的鍵值的語法: LOAD DATA LOW_PRIORITY INFILE "/home/mark/data.sql" REPLACE INTO TABLE Orders; 上面的句子看起來有點(diǎn)笨拙,但卻把關(guān)鍵字放在了讓您的剖析器可以理解的地方。 下面的一對選項(xiàng)描述了文件的記錄格式,這些選項(xiàng)也是在mysqlimport工具中可以用的。他們在這里看起來有點(diǎn)不同。首先,要用到FIELDS關(guān)鍵字,如果用到這個(gè)關(guān)鍵字,MySQL剖析器希望看到至少有下面的一個(gè)選項(xiàng): TERMINATED BY character ENCLOSED BY character ESCAPED BY character 這些關(guān)鍵字與它們的參數(shù)跟mysqlimport中的用法是一樣的. The TERMINATED BY 描述字段的分隔符,默認(rèn)情況下是tab字符(\t) ENCLOSED BY描述的是字段的括起字符。比方以引號括起每一個(gè)字段。 ESCAPED BY 描述的轉(zhuǎn)義字符。默認(rèn)的是反些杠(backslash:\ ). 下面仍然使用前面的mysqlimport命令的例子,用LOAD DATA INFILE語句把同樣的文件導(dǎo)入到數(shù)據(jù)庫中: LOAD DATA INFILE "/home/mark/Orders.txt" REPLACE INTO TABLE Orders FIELDS TERMINATED BY ',' ENCLOSED BY '"'; LOAD DATA INFILE語句中有一個(gè)mysqlimport工具中沒有特點(diǎn): LOAD DATA INFILE 可以按指定的列把文件導(dǎo)入到數(shù)據(jù)庫中。