線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1437
推到 Plurk!
推到 Facebook!

請問使用odbc連mysql 要如何做到匯入匯出資料庫呢~謝謝

答題得分者是:tech_state
anglo
一般會員


發表:11
回覆:7
積分:3
註冊:2003-06-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-21 23:10:55 IP:61.62.xxx.xxx 未訂閱
請問各位大大~~~我現在使用odbc 連結mysql 要如何做到匯入匯出資料庫~ 比如說有好幾個table 要匯出成文字檔或.db 的 在把它給匯入資料庫~~謝謝~~~
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-21 23:26:45 IP:203.204.xxx.xxx 未訂閱
anglo, 您好 最近正好也在學習使用BCB + MySQL, 不過我是透過MyODBC, 不知道與您的情形是否相同, 提供我的方法給您參考看看。
單一Table的資料匯出  
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
   String str;
   double i;
   char *buf;
   TMemoryStream *ms = new TMemoryStream();       ADOTable1->First();
   if(OpenDialog1->Execute())
   {
      while(!ADOTable1->Eof)
      {
         str = "";
         for(i = 0; i < ADOTable1->FieldCount; i  )
         {
            if(i == ADOTable1->FieldCount - 1)
               str = str   ADOTable1->Fields->Fields[i]->AsString   char(VK_TAB)   "\r\n";
            else
               str = str   ADOTable1->Fields->Fields[i]->AsString   char(VK_TAB);
         }
         buf = str.c_str();
         ms->Write(buf, str.Length());
         ms->SaveToFile(OpenDialog1->FileName);
         ADOTable1->Next();
      }
      delete ms;
      ShowMessage("匯出完成");
   }
}
檔案匯入單一Table
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
   char *buf;
   int i;
   String str, str2, str3;
   if(OpenDialog1->Execute())
   {
      // 先將資料庫中所有資料刪除
      ADOQuery1->Close();
      ADOQuery1->SQL->Text = "delete from Customer ";
      try
      {
         ADOQuery1->ExecSQL();
      }
      catch(...)
      {
         ShowMessage("刪除資料庫失敗");
         Abort();
      }
      // 再Import所有資料到資料庫
      TMemoryStream *ms = new TMemoryStream();
      ms->LoadFromFile(OpenDialog1->FileName);
      buf = (char *)ms->Memory;
      str = buf;
      str2 = "'";
      for(i = 1; i < str.Length(); i  )
      {
         if(str.SubString(i, 1) == char(VK_TAB))  
            str2 = str2   "', '";
         else if(str.SubString(i, 1) == "\r" && str.SubString(i   1, 1) == "\n")
         {
            ADOQuery1->Close();
            ADOQuery1->SQL->Clear();
            ADOQuery1->SQL->Text = "insert into Customer Values( "   str2   "')";
            try
            {
               ADOQuery1->ExecSQL();
               str2 = "'";
               i = i   1;
            }
            catch(...)
            {
               ShowMessage("匯入資料失敗");
               Abort();
            }
         }
         else
            str2 = str2   str.SubString(i, 1);
      }
      delete ms;
      ShowMessage("匯入資料完成");
   }
}    // 刪除資料庫的部分可做可不做,如果不做的話,要小心Primary key等等的唯一值是否會有重複的問題。
 
以上方法不一定是最好的,只是提供我的方法給您參考。 ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
anglo
一般會員


發表:11
回覆:7
積分:3
註冊:2003-06-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-23 15:53:23 IP:61.62.xxx.xxx 未訂閱
謝謝tech_state 用您的方法~果然可以把問題解決~~不過我在匯入的時候~ char 的位置有一點問題~我已經解決了~我也是使用MyODBC~ 只是用BDE去連結~像您在sql 語法是使用"雙引號,而我用的是'單引號 是因為您是用ADO去連結的關係嗎~~
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-23 16:07:33 IP:203.204.xxx.xxx 未訂閱
引言: 謝謝tech_state 用您的方法~果然可以把問題解決~~不過我在匯入的時候~ char 的位置有一點問題~我已經解決了~我也是使用MyODBC~ 只是用BDE去連結~像您在sql 語法是使用"雙引號,而我用的是'單引號 是因為您是用ADO去連結的關係嗎~~
anglo, 您好 不知您說雙引號和單引號指的是哪裡? ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
kuochih
一般會員


發表:2
回覆:8
積分:2
註冊:2003-07-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-08-26 22:56:28 IP:163.28.xxx.xxx 未訂閱
hi, 如果是要單純把一個mysql的table匯出成一.txt檔 我上次再mysql的語法中找到這樣的用法 配合bcb的qurey元件 Query1->SQL->Clear(); Query1->SQL->Add("select * into outfile 'filename.txt' from table "); Query1->Prepare(); Query1->ExecSQL(); 即可匯出table 若需要匯入 LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name 細節可參考http://linux.tnc.edu.tw/techdoc/mysql/mysql_doc/manual_Reference.html#LOAD_DATA
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-08-27 10:33:26 IP:61.221.xxx.xxx 未訂閱
kuochih提供的方法不錯喔! 簡單明瞭。    ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
系統時間:2024-07-02 19:36:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!