mysql上傳文件
一、一般步驟
1、用phpADMIN生成CSV格式文件
以PHP+MySQL模式建立個人主頁的讀者,在自己的機器上都有PHP+MySQL環境吧?就在這個環境下,用phpADMIN生成以分號為分隔符的dotmud.csv文件。
2、將dotmud.csv文件通過ftp上傳到伺服器。
3、上傳data.php程序(程序附後),在瀏覽器調用data.php程序,將dotmud.csv文件的內容加入到資料庫。
二、特殊處理
一般的數據,通過上述步驟,基本可以順利上傳。但對於包含特殊字元的數據(比如資料庫記錄中包含換行符、單引號、分號),就要做些特殊的處理。
1、換行符的處理
PHP的fgetcsv()函數以換行符作為每行的結束標志。如果MySQL數據表的記錄包含換行符,fgetcsv()就不能完整讀取記錄行。
筆者的解決方法是修改phpADMIN的lib.inc.php3文件(讀者也可以不修改phpADMIN文件,而是用其他方法直接加工phpADMIN生成的dotmud.csv文件,達到同樣的效果)的get_table_csv()函數:
在 $schema_insert=ereg_replace($sep."$","",$schema_insert) 行後加入如下命令行
$schema_insert=ereg_replace("\r\n","`return`",$schema_insert)
將換行符轉換為不容易出現的換行標識串`return`(讀者可根據自己數據的特點設置獨特的換行標識串),再在data.php程序中加一行命令$data[$i]=ereg_replace("`return`","\r\n",$data[$i]),用來將換行標識串還原成換行符。
2、分隔符的處理
如果MySQL記錄行恰好包含CSV分隔符,fgetcsv()進行分隔處理時就會出現問題。
筆者仍然是通過修改lib.inc.php3文件解決的。
在get_table_csv()的$schema_insert="$row[$j]".$sep行前加一行
$row[$j]=ereg_replace($sep,"`return_sep`",$row[$j]) 命令,將分隔符轉為分隔標識串`return_sep`,同時在data.php中用命令行 $data[$i]=ereg_replace("`return_sep`",";",$data[$i]) 進行還原處理。
3、單引號的處理
MySQL的SQL語句行對單引號有特殊的定義,如果直接提交含單引號的SQL語句,就會出錯。這種情況需要加上轉義符。在data.php中加一行 $data[$i]=ereg_replace("'","\'",$data[$i]) 就可解決。
另外,在數據記錄特別多的的情況下,dotmud.csv文件可能比較大,如果在伺服器的限定時間內不能執行完data.php程序,就需要按行分拆dotmud.csv。如筆者有個7000行的dotmud.csv文件,在自己的機器上執行到600行就提示超時,便拆成10個文件上傳到全路互聯(www.wayall.com),結果對方的伺服器速度快,每個文件的處理時間還不到1秒,而php默認的限定執行時間可是30秒啊!看來我做的分拆實屬多餘。
以上方法解決了資料庫內容的上傳問題。對於資料庫結構的上傳,只要稍微修改一下data.php程序就可實現。其實,如果庫結構比較簡單,用phpADMIN更方便
② 如何將MySQL數據直接上傳到S3變成文件
拆分文件後,可將它們上傳到存儲桶。在載入文件之前,您可以選擇壓縮或加密文件。
創建一個用於存儲數據文件的 Amazon S3 存儲桶,然後將數據文件上傳到該存儲桶。有關創建存儲桶和上傳文件的信息,請參閱 Amazon Simple Storage Service 開發人員指南 中的使用 Amazon S3 存儲桶。
Amazon S3 為某些操作提供最終一致性,因此新數據在上傳後可能不會立即可用。有關更多信息,請參閱管理數據一致性
重要
存儲數據文件的 Amazon S3 存儲桶必須在與集群相同的區域中創建,除非您使用 REGION 選項指定 Amazon S3 存儲桶所在的區域。
您可以通過以下方式在某個特定區域中創建 Amazon S3 存儲桶:在使用 Amazon S3 控制台創建存儲桶時選擇該區域,或在使用 Amazon S3 API
或 CLI 創建存儲桶時指定終端節點。
數據載入後,確認 Amazon S3 上出現了正確的文件。
③ 怎麼把mysql資料庫上傳到網站伺服器
如果你只是想把表結構和數據上傳的話,你可以先把這些東西導出到一個sql文件中。然後把這個文件上傳到伺服器,然後執行這個文件,就OK了。
導出命令式:mysqlmp -u 用戶名 -p 資料庫名 > 導出的文件名
比如你想導出test資料庫,那麼:
mysqlmp -u root -p test > test.sql
然後你就可以把test.sql上傳
④ 如何把mysql資料庫上傳到遠程伺服器上(即網站)
1)、數據不多的情況下,可以直接用資料庫連接工具,上面有資料庫拷貝到資料庫的功能來拷貝。
2)、數據量大的情況下,建議用下面的方式:
1、遠程服務上面安裝mysql伺服器
2、本地的資料庫的數據導出到一個文件中
3、ftp或者其他方式,把這個資料庫文件傳到遠程伺服器
4、用遠程服務中source命令,導入
⑤ MYSQL資料庫文件怎麼上傳
MYSQL資料庫都是導入導出的,MSSQL也是,不需要上傳的,直接導就可以了!
⑥ phpMyAdmin怎麼上傳mysql資料庫文件
MySQL資料庫的導入,有兩種方法:
1) 先導出資料庫SQL腳本,再導入;
2) 直接拷貝資料庫目錄和文件。
在不同操作系統或MySQL版本情況下,直接拷貝文件的方法可能會有不兼容的情況發生。
所以一般推薦用SQL腳本形式導入。下面分別介紹兩種方法。
2. 方法一 SQL腳本形式
操作步驟如下:
2.1. 導出SQL腳本
在原資料庫伺服器上,可以用phpMyAdmin工具,或者mysqlmp命令行,導出SQL腳本。
2.1.1 用phpMyAdmin工具
導出選項中,選擇導出「結構」和「數據」,不要添加「DROP DATABASE」和「DROP TABLE」選項。
選中「另存為文件」選項,如果數據比較多,可以選中「gzipped」選項。
將導出的SQL文件保存下來。
2.1.2 用mysqlmp命令行
命令格式
mysqlmp -u用戶名 -p 資料庫名 > 資料庫名.sql
範例:
mysqlmp -uroot -p abc > abc.sql
(導出資料庫abc到abc.sql文件)
提示輸入密碼時,輸入該資料庫用戶名的密碼。
2.2. 創建空的資料庫
通過主控界面/控制面板,創建一個資料庫。假設資料庫名為abc,資料庫全權用戶為abc_f。
2.3. 將SQL腳本導入執行
同樣是兩種方法,一種用phpMyAdmin(mysql資料庫管理)工具,或者mysql命令行。
2.3.1 用phpMyAdmin工具
⑦ PHP向MySQL資料庫上傳文件的問題
把reg.php中的第6行$photo=$_POST['photo'];改成$photo=$_FILES['photo']['tmp_name'];就好了!
當文件上傳時,該文件將保存在Web伺服器上的臨時目錄中,這是WEB伺服器默認的臨時目錄。如果在腳本執行完成之前不移動、復制或更改文件名稱,該文件將被刪除。
在PHP腳本中,需要處理的數據保存在超級全局數組$_FILES中。
$_FILES['formname']['tmp_name']:文件在WEB伺服器中臨時存儲的位置
$_FILES['formname']['name']:用戶系統中的原文件名稱
$_FILES['formname']['size']:文件的位元組大小
$_FILES['formname']['type']:文件的MIME類型,例如:text/plain或image/gif
$_FILES['formname']['error']:任何與文件上傳相關的錯誤代碼
註:formname就是<input type="file" name="photo">的name值,在PHP腳本中你可以嘗試用print_r($_FILES['formname']);顯示相關數值!
你可以嘗試用以下代碼,完整的代碼應該增加限制上傳文件大小!!!
input.html文件:
<html>
<body>
<form name="msgform" method="post" action="reg.php" enctype='multipart/form-data'>
<input type="file" name="photo"><br>
<input type="submit" value="上傳">
</form>
</body>
</html>
reg.php文件:
<?php
$conn=mysql_connect("localhost","user","password")
or die("不能連接資料庫伺服器:".mysql_error());
mysql_select_db("database",$conn) or die("不能選擇資料庫:".mysql_error());
//print_r($_FILES['photo']);//測試時使用
if($_FILES['photo']['error']>0){
$name=$_FILES['photo']['name'];//直接用原文件名稱存入資料庫比較方便使用
$photo=$_FILES['photo']['tmp_name'];
$fp=fopen($photo,"r");
$data=addslashes(fread($fp,filesize('$photo')));
$sql="insert into tablename (name,photo) values('$name','$photo');
mysql_query($sql,$conn) or die("插入數據失敗:".mysql_error());
mysql_close($conn);
echo "上傳成功";
}else{
echo "上傳出錯";
}//From J.L
?>
⑧ 請教有關MYSQL文件上傳大小的限制的設置方法
1、由於mysql能解析sql的壓縮文件,因此將200M壓縮後為5M。
2、默認情況下:MySQL導入文件大小有限制的,最大為2M,所以當文件很大時候,直接無法導入,可修改php.ini參數調整:
在php.ini中修改相關參數:
影響MySQL導入文件大小的參數有三個:、
memory_limit=128M,upload_max_filesize=2M,post_max_size=8M
⑨ 如何把MYSQL資料庫上傳到空間
首先,登錄mysql(127.0.0.1/phpmyadmin)輸入用戶名、密碼,用戶名通常是root,密碼自己看著辦,然後在本地導出資料庫,存為一個擴展名為xxx.sql的文檔。如果你在資料庫里用到了GB2312記得用Dreamweaver打開,替換成GBK,因為我的PHPMYADMIN裡面沒有GB2312編碼。
然後通過瀏覽器打開網址的後台管理界面,用新網給你的用戶名和密碼登陸。在最下方有一個MYSQL資料庫管理入口。
進入新網後台以後,進去後再次要求輸入密碼,再次驗證,你照開始一樣輸入就可以。我的MYSQL資料庫沒有直接導入功能,所以把剛剛在Dreamweaver編輯的代碼全部復制到SQL執行窗口,點擊執行即可!接下來就是修改網站文件里的鏈接代碼,將對應的伺服器地址、用戶名和密碼換成對應的就可以了。很簡單吧。