?
創(chuàng)新新互聯(lián),憑借十多年的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站經(jīng)驗(yàn),本著真心·誠(chéng)心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計(jì)網(wǎng)站有上1000家案例。做網(wǎng)站建設(shè),選創(chuàng)新互聯(lián)公司。
include_once("include.php");
$card=445;//接收$card
//英文字段轉(zhuǎn)中文字段
function field_conv($en,$card){
global $DbUseDatabase,$DbMHost,$DbMUser,$DbMPass;
$db = new newquery($DbUseDatabase,$DbMHost,$DbMUser,$DbMPass);
$db-query("select fieldname from t_cardinfo where cardkind=$card and field ='$en'");
if($db-next_record()){
return $db-f(0);
}
else
return false;
}
function mysql_to_dbf($mysql_datasource,$source_table,$destination_dbf)
{
global $DbUseDatabase,$DbMHost,$DbMUser,$DbMPass,$card;
$link=mysql_connect($DbMHost,$DbMUser,$DbMPass) or exit("不能鏈接到數(shù)據(jù)庫(kù)");
$operate=mysql_select_db($mysql_datasource,$link);
//連mysql數(shù)據(jù)源
$rs=mysql_query("SELECT * from ".$source_table." limit 0,1");
$number_of_fields=mysql_num_fields($rs);//取字段數(shù)量
//不要前面5個(gè)底層字段
for($field_counter=5;$field_counter$number_of_fields;$field_counter++)
{
$dbf_field_type=mysql_field_type($rs,$field_counter);
$dbf_field_name=mysql_field_name($rs,$field_counter);
$dbf_field_len=mysql_field_len($rs,$field_counter);
//print($dbf_field_name);
if(isset($point)){
unset($point);
array_pop($field);
}
switch($dbf_field_type)
{
case "string":
$dbf_field_name=substr(mysql_field_name($rs,$field_counter),0,10);
//自由表的字段名不能超過(guò)10,請(qǐng)注意
$dbf_field_len=mysql_field_len($rs,$field_counter);
if($dbf_field_len=255)
{
$dbf_field_len--;
}
$dbf_field_type="C";
break;
case "varchar":
$dbf_field_name=substr(mysql_field_name($rs,$field_counter),0,10);
//自由表的字段名不能超過(guò)10,請(qǐng)注意
$dbf_field_len=mysql_field_len($rs,$field_counter);
if($dbf_field_len=255)
{
$dbf_field_len--;
}
$dbf_field_type="C";
break;
case "decimal":
$dbf_field_name=substr(mysql_field_name($rs,$field_counter),0,10);
//自由表的字段名不能超過(guò)10,請(qǐng)注意
$dbf_field_len=mysql_field_len($rs,$field_counter);
if($dbf_field_len=255)
{
$dbf_field_len--;
}
$dbf_field_type="C";
break;
case "real":
$dbf_field_name=substr(mysql_field_name($rs,$field_counter),0,10);
//自由表的字段名不能超過(guò)10,請(qǐng)注意
$dbf_field_len=mysql_field_len($rs,$field_counter);
if($dbf_field_len=255)
{
$dbf_field_len--;
}
$dbf_field_type="N";
$dbf_field_len="10";
$point="0";
break;
case "date":
$dbf_field_type="D";
break;
}
$fieldname=field_conv($dbf_field_name,$card);
$fieldname=subcnstr($fieldname, 9, ''); //字段最長(zhǎng)10個(gè)字符
$field[0]=$fieldname;
$field[1]=$dbf_field_type;
$field[2]=$dbf_field_len;
if(isset($point)) {
$field[3]=$point;
}
$dbf[]=$field;
}
$d = array_map(null, $dbf);
if (!dbase_create($destination_dbf,$dbf)){
print "strongError!/strong";
exit;
}
//else
// print "strongok!/strong";
//寫入字段名完成!
$dbfp=dbase_open ($destination_dbf,2);
$rs=mysql_query("SELECT * from ".$source_table);
$field=mysql_num_fields($rs);
while($row = mysql_fetch_array($rs))
{
$i=0;
for($fieldcounter=5;$fieldcounter$field;$fieldcounter++)//不要前面5個(gè)底層字段
{
$field_name=mysql_field_name($rs,$fieldcounter);
$rows[$i]=$row[$field_name];
$i++;
}
dbase_add_record ($dbfp,$rows); //寫入記錄
}
//print_r($dbffield);
dbase_close($dbfp);
mysql_close($link);
}
mysql_to_dbf("nbw1-SY","t_cardcontent445","c:\a.dbf");
echo "scriptalert('導(dǎo)出完成!')/script";
?
1、工具的準(zhǔn)備
1.1、安裝Oracle SQL Developer,我是用的是最新版本,下載后解壓到任意目錄即可(不含中文,空格)。
1.2、下載mysql的驅(qū)動(dòng)jar文件,官網(wǎng)地址查出后忘了,此處免費(fèi)提供下載;下載后解壓到任意目錄
1.3、打開Oracle SQL Developer,菜單欄中選擇 工具--首選項(xiàng)--數(shù)據(jù)庫(kù)--第三方JDBC驅(qū)動(dòng)程序中選擇mysql驅(qū)動(dòng)解壓后的jar文件,然后點(diǎn)擊確定。
2、建立Oracle數(shù)據(jù)庫(kù)與用戶(用來(lái)承載mysql移植來(lái)的數(shù)據(jù))--此處操作后續(xù)補(bǔ)齊,網(wǎng)上資料很多,當(dāng)然,此處也可以省略(如果你的項(xiàng)目中不需要額外的數(shù)據(jù)庫(kù)和用戶的話)
2.1、在數(shù)據(jù)庫(kù)建好之后,為了給用戶授予權(quán)限,我們創(chuàng)建一個(gè)管理員的連接(當(dāng)然,你也可以在命令行中連接oracle完成授權(quán)操作)
2.2、建立用戶并授予權(quán)限,授予權(quán)限(此處指你已經(jīng)創(chuàng)建了自己的數(shù)據(jù)庫(kù),或者使用oracle默認(rèn)的數(shù)據(jù)庫(kù))
另:此處提供簡(jiǎn)略版創(chuàng)建用戶與表空間的結(jié)構(gòu),此處不做解釋,后期補(bǔ)充
--創(chuàng)建臨時(shí)表空間 aaaa意義:臨時(shí)表空間,臨時(shí)表空間文件
create temporary tablespace aaaa_temp
tempfile 'G:\software\Java_database\oracle\runtimebj\aaaa_temp.dbf'
size 32m
autoextend on
next 32m maxsize 2048m
extent management local;
--創(chuàng)建數(shù)據(jù)表空間 aaaa意義:表空間,表空間文件
create tablespaceaaaa
logging
datafile 'G:\software\Java_database\oracle\runtimebj\aaaa.dbf'
size 100m
autoextend on
next 32m maxsize 2048m
extent management local;
--創(chuàng)建用戶并指定表空間 aaaa順序意義:用戶名,密碼,表空間,臨時(shí)表空間
create user aaaa identified byaaaa
default tablespaceaaaa temporary tablespaceaaaa_temp;
--授予message用戶DBA角色的所有權(quán)限 此處的aaaa只表示用戶名
GRANT DBA TOaaaa;
grant resource to aaaawith admin option; --需添加這句話否則連接的時(shí)候會(huì)報(bào)錯(cuò)...
2.3再次創(chuàng)建連接,使用新創(chuàng)建的用戶連接
2.4、連接建立后,右鍵連接,移植資料檔案庫(kù)--關(guān)聯(lián)移植資料檔案庫(kù)--點(diǎn)擊確定
2.5、連接mysql(就是需要進(jìn)行移植到的mysql數(shù)據(jù)庫(kù)),點(diǎn)擊選擇數(shù)據(jù)庫(kù)后確定
3、移植mysql中的表到數(shù)據(jù)庫(kù)
3.1、在剛剛建立的mysql中選擇需要進(jìn)行移植的數(shù)據(jù)庫(kù)(也可以點(diǎn)擊加號(hào),批量選擇需要移植的表,此處移植整個(gè)數(shù)據(jù)庫(kù),所以我在數(shù)據(jù)庫(kù)上右鍵了),右鍵選擇捕獲方案
等待
3.2、在剛捕獲的模型中選擇需要的數(shù)據(jù)庫(kù)或者表等,點(diǎn)擊轉(zhuǎn)換為Oracle模型
3.3、設(shè)置數(shù)據(jù)映射,一般默認(rèn)即可(但是我的項(xiàng)目中mysql使用了datetime和timestamp,如果默認(rèn)會(huì)轉(zhuǎn)為oracle中的date,從而失去了時(shí)分秒,如果必須需要十分秒的話,此處映射可以將timestamp--timestamp,但是datetime這里好像是無(wú)法轉(zhuǎn)換為timestamp,只能后面手動(dòng)修改了...悲劇...),此后點(diǎn)擊應(yīng)用,同樣進(jìn)入進(jìn)度條
3.4、右鍵點(diǎn)擊剛剛捕獲的方案,因?yàn)樵谏傻臅r(shí)候,他會(huì)根據(jù)方案名稱重新創(chuàng)建用戶,并將生成的表存放到該用戶下,所以建議重命名方案,將其修改為我們需要的用戶名稱(用戶名與密碼相同),用戶名稱也就是我們jdbc或者h(yuǎn)ibernate連接數(shù)據(jù)庫(kù)時(shí)將要使用的名稱。完成后點(diǎn)擊生成。
3.5、生成建立表的sql語(yǔ)句,點(diǎn)擊下列紅色框按鈕開始執(zhí)行...等待
3.6、執(zhí)行后,在創(chuàng)建連接,使用我們執(zhí)行sql中的用戶名密碼(也就是方案名稱),連接后,你會(huì)發(fā)現(xiàn),表已經(jīng)生成了
表移植完畢
4、數(shù)據(jù)的移植
4.1、右鍵上次我們創(chuàng)建的轉(zhuǎn)換的模型,選擇移動(dòng)數(shù)據(jù)
4.2、選擇源與目標(biāo)(目標(biāo)是我們剛剛建立表的那個(gè)連接)
4.3、進(jìn)入移動(dòng)數(shù)據(jù)進(jìn)度條,等待后,數(shù)據(jù)移動(dòng)完成。
MYsql具備導(dǎo)入其他數(shù)據(jù)庫(kù)的功能,但EXCEl雖然可以當(dāng)成數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)數(shù)據(jù),但他的若干工作表的存儲(chǔ)方式,給EXCEL直接導(dǎo)入其他數(shù)據(jù)庫(kù)帶來(lái)麻煩。
建議使用EXCEL2003版本,將某一工作表數(shù)據(jù)存儲(chǔ)為DBF格式,再將DBF格式數(shù)據(jù)導(dǎo)入到Mysql中。
網(wǎng)頁(yè)標(biāo)題:dbf怎么傳到mysql dbf文件導(dǎo)入sqlserver數(shù)據(jù)庫(kù)
鏈接分享:http://muchs.cn/article22/dohcdjc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站改版、面包屑導(dǎo)航、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)