在這里分享一下在python中上傳數(shù)據(jù)到MySQL的整體流程。
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名注冊、虛擬主機、營銷軟件、網(wǎng)站建設、王屋網(wǎng)站維護、網(wǎng)站推廣。
利用for循環(huán),可以依次把列表中的每一組數(shù)據(jù)寫入sql語句并執(zhí)行。
需要注意的是values的每個值都需要用引號引起來,否則會報錯
首先,登錄mysql(127.0.0.1/phpmyadmin)輸入用戶名、密碼,用戶名通常是root,密碼自己看著辦,然后在本地導出數(shù)據(jù)庫,存為一個擴展名為xxx.sql的文檔。如果你在數(shù)據(jù)庫里用到了GB2312記得用Dreamweaver打開,替換成GBK,因為我的PHPMYADMIN里面沒有GB2312編碼。
然后通過瀏覽器打開網(wǎng)址的后臺管理界面,用新網(wǎng)給你的用戶名和密碼登陸。在最下方有一個MYSQL數(shù)據(jù)庫管理入口。
3
進入新網(wǎng)后臺以后,進去后再次要求輸入密碼,再次驗證,你照開始一樣輸入就可以。我的MYSQL數(shù)據(jù)庫沒有直接導入功能,所以把剛剛在Dreamweaver編輯的代碼全部復制到SQL執(zhí)行窗口,點擊執(zhí)行即可!接下來就是修改網(wǎng)站文件里的鏈接代碼,將對應的服務器地址、用戶名和密碼換成對應的就可以了。很簡單吧。
先備份mysql數(shù)據(jù)庫,用命令mysqldump -ruoot -p dbnamemydb.sql
然后將備份文件傳到服務器上
最后將備份文件恢復入mysql中就可以了,命令mysql -uroot -p dbname mydb.sql
1)、數(shù)據(jù)不多的情況下,可以直接用數(shù)據(jù)庫連接工具,上面有數(shù)據(jù)庫拷貝到數(shù)據(jù)庫的功能來拷貝。
2)、數(shù)據(jù)量大的情況下,建議用下面的方式:
1、遠程服務上面安裝mysql服務器
2、本地的數(shù)據(jù)庫的數(shù)據(jù)導出到一個文件中
3、ftp或者其他方式,把這個數(shù)據(jù)庫文件傳到遠程服務器
4、用遠程服務中source命令,導入
MySQL數(shù)據(jù)庫的導入,有兩種方法:
1)
先導出數(shù)據(jù)庫SQL腳本,再導入;
2)
直接拷貝數(shù)據(jù)庫目錄和文件。
在不同操作系統(tǒng)或MySQL版本情況下,直接拷貝文件的方法可能會有不兼容的情況發(fā)生。
所以一般推薦用SQL腳本形式導入。下面分別介紹兩種方法。
2.
方法一
SQL腳本形式
操作步驟如下:
2.1.
導出SQL腳本
在原數(shù)據(jù)庫服務器上,可以用phpMyAdmin工具,或者mysqldump命令行,導出SQL腳本。
2.1.1
用phpMyAdmin工具
導出選項中,選擇導出“結(jié)構(gòu)”和“數(shù)據(jù)”,不要添加“DROP
DATABASE”和“DROP
TABLE”選項。
選中“另存為文件”選項,如果數(shù)據(jù)比較多,可以選中“gzipped”選項。
將導出的SQL文件保存下來。
2.1.2
用mysqldump命令行
命令格式
mysqldump
-u用戶名
-p
數(shù)據(jù)庫名
數(shù)據(jù)庫名.sql
范例:
mysqldump
-uroot
-p
abc
abc.sql
(導出數(shù)據(jù)庫abc到abc.sql文件)
提示輸入密碼時,輸入該數(shù)據(jù)庫用戶名的密碼。
2.2.
創(chuàng)建空的數(shù)據(jù)庫
通過主控界面/控制面板,創(chuàng)建一個數(shù)據(jù)庫。假設數(shù)據(jù)庫名為abc,數(shù)據(jù)庫全權(quán)用戶為abc_f。
2.3.
將SQL腳本導入執(zhí)行
同樣是兩種方法,一種用phpMyAdmin(mysql數(shù)據(jù)庫管理)工具,或者mysql命令行。
2.3.1
用phpMyAdmin工具
一、一般步驟
1、用phpADMIN生成CSV格式文件
以PHP+MySQL模式建立個人主頁的讀者,在自己的機器上都有PHP+MySQL環(huán)境吧?就在這個環(huán)境下,用phpADMIN生成以分號為分隔符的dotmud.csv文件。
2、將dotmud.csv文件通過FTP上傳到服務器。
3、上傳data.php程序(程序附后),在瀏覽器調(diào)用data.php程序,將dotmud.csv文件的內(nèi)容加入到數(shù)據(jù)庫。
二、特殊處理
一般的數(shù)據(jù),通過上述步驟,基本可以順利上傳。但對于包含特殊字符的數(shù)據(jù)(比如數(shù)據(jù)庫記錄中包含換行符、單引號、分號),就要做些特殊的處理。
1、換行符的處理
PHP的fgetcsv()函數(shù)以換行符作為每行的結(jié)束標志。如果MySQL數(shù)據(jù)表的記錄包含換行符,fgetcsv()就不能完整讀取記錄行。
筆者的解決方法是修改phpADMIN的lib.inc.php3文件(讀者也可以不修改phpADMIN文件,而是用其他方法直接加工phpADMIN生成的dotmud.csv文件,達到同樣的效果)的get_table_csv()函數(shù):
在 $schema_insert=ereg_replace($sep."$","",$schema_insert) 行后加入如下命令行
$schema_insert=ereg_replace("\r\n","`return`",$schema_insert)
將換行符轉(zhuǎn)換為不容易出現(xiàn)的換行標識串`return`(讀者可根據(jù)自己數(shù)據(jù)的特點設置獨特的換行標識串),再在data.php程序中加一行命令$data[$i]=ereg_replace("`return`","\r\n",$data[$i]),用來將換行標識串還原成換行符。
2、分隔符的處理
如果MySQL記錄行恰好包含CSV分隔符,fgetcsv()進行分隔處理時就會出現(xiàn)問題。
筆者仍然是通過修改lib.inc.php3文件解決的。
在get_table_csv()的$schema_insert="$row[$j]".$sep行前加一行
$row[$j]=ereg_replace($sep,"`return_sep`",$row[$j]) 命令,將分隔符轉(zhuǎn)為分隔標識串`return_sep`,同時在data.php中用命令行 $data[$i]=ereg_replace("`return_sep`",";",$data[$i]) 進行還原處理。
3、單引號的處理
MySQL的SQL語句行對單引號有特殊的定義,如果直接提交含單引號的SQL語句,就會出錯。這種情況需要加上轉(zhuǎn)義符。在data.php中加一行 $data[$i]=ereg_replace("'","\'",$data[$i]) 就可解決。
另外,在數(shù)據(jù)記錄特別多的的情況下,dotmud.csv文件可能比較大,如果在服務器的限定時間內(nèi)不能執(zhí)行完data.php程序,就需要按行分拆dotmud.csv。如筆者有個7000行的dotmud.csv文件,在自己的機器上執(zhí)行到600行就提示超時,便拆成10個文件上傳到全路互聯(lián)(),結(jié)果對方的服務器速度快,每個文件的處理時間還不到1秒,而php默認的限定執(zhí)行時間可是30秒啊!看來我做的分拆實屬多余。
以上方法解決了數(shù)據(jù)庫內(nèi)容的上傳問題。對于數(shù)據(jù)庫結(jié)構(gòu)的上傳,只要稍微修改一下data.php程序就可實現(xiàn)。其實,如果庫結(jié)構(gòu)比較簡單,用phpADMIN更方便
分享名稱:怎么給mysql上傳數(shù)據(jù) mysql導入數(shù)據(jù)文件
URL網(wǎng)址:http://m.kartarina.com/article4/dodeooe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化、ChatGPT、動態(tài)網(wǎng)站、虛擬主機、品牌網(wǎng)站設計、面包屑導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)