sqlserverのデータをMysqlに導入する(方法2)

4797 ワード

ありがとうございます  http://database.51cto.com/art/200612/36885.htm
  【導読】本論文では、sql serverデータベースに格納されているデータをすべてmysqlデータベースに導入する方法を紹介します.
         一つはmysql ODBCをインストールし、sql serverの導出機能を利用してmysqlデータソースを選択し、データの直接的な導出を行う方法です.この方法は簡単ですが、実際の応用には多くの弊害があります.ちょっと変えてもいいと言われていますが、この初心者はどうやって変えるかまだ分かりません.次に、mysqlのデータベースデザインでは時間をint型にしていますので、データガイドが来たら衝突します.再度、この方法で作成したmysqlデータテーブルのフィールドタイプは全部不適切です.だからこのような方法は提唱できないと思います. 
二つ目はphpまたはaspスクリプトを使ってデータの導入機能を実現する方法です.この方法はプログラムを作成する必要がありますが、柔軟性があり、操作もそんなに難しくないです.すべてはあなたの把握の中に尽くしています.簡単にこの方法を紹介します.前提条件はあなたのmysql環境がすでに構築されました.まず目標データベースを作ってから、すべてのテーブル構造をsql文で生成します.今はすべてのものがそろっています.データだけが足りません.
sql serverのmydbデータベースのuserテーブルのデータは次のphpスクリプトでmysqlのmydbデータベースにインポートできます.
=====================================================================================================================================
$cnx=odbc_connect('web','admin','123456')   //'web'はsqlserverのmydbのデータソース名であり、    'admin'はmdbを訪問するユーザ名で、'123456'はmdbを訪問するパスワードです.exec($cnx、'select*from user);   //sql serverの中のmydbデータベースのuser表を開けます.num_row=0;conn=mysql_pconnect(「local host」「root」「123456」)   //接続mysql@mysql_select_.db('mydb'、$conn)ordie(データベースに接続できません.管理者に連絡してください.)   //mysqlのmydbデータベースwhileを開く   //sql serverのmydbライブラリのuserテーブルからデータを逐条取り出し、データを選択すれば、    前のselect文に条件判定($num urow+)、$field 1=odbcursult($cur,1)を付けることができます.   //ここでのパラメータi(1,2,3.)は、記録セットのi番目の領域を指し、    オプションで選択できます.fieldiは対応するドメインの値を得て、fieldiを操作します.field 2=dbcursult($cur,2);$field 3=dcursult($cur,3);$field 4=dbcursult($cur,4);field 5=fieldfidfilt 5==fidfilt 5===fidfield fidficcccccccccccccccccccfiltltlt 5($filt 5=$field 4)は、field 4、$field 4=$field 4=$field 5($field 5は、field 5は、;//ここはsql serverの中のdatetimeタイプです.    フィールドに対応する変換処理を行い、私が必要とするint型に変換します.querystring=「insertinto user(id,name,username,password,recdate)values('field 1'、''field 2'、''field 3','field 4','field 4','field 4','field 4'fieldfield 4','field 4'field 4'field 4','field 5'field'field'mfield 5''',myfield's strerererererererererererereccccccdedededededededededededede;$ datestr=$arr 1[0]、$timestr=$arr 1[1]、$arrudte=split(“-”、datestr)$arrchutime=split(":"、$timestr")、$yearar=$arruudte[0];$month=$arruuudute[1]、$day=$araruuuuuuuuuuuuude[2]、$hor=$markuutime[0]、$minute==aritute===araututute[1]$matttttttttttttttttttmmmmmmmmmmmu]、$matttttttttttttme===================[1,mmmmm$ year);return$timeuint;?>
========================================================================================================================
        このセグメントスクリプトをsql.phpに保存し、サーバー上で実行すれば、サーバー上のsql serverのmydbデータベースのuserテーブルのデータをmysqlのmydbデータベースのuserテーブルに導入することができます.他の表の操作はこれと同じで、詳しく説明しません. 
       aspシナリオでsql serverのmydbデータベースのデータをmysqlのmydbデータベースに導入することを紹介します.
===========================================================================================================================
===========================================================================================================================
以上の二つはphpスクリプトとaspスクリプトを用いてuserテーブルのデータをsql serverからmysqlへの導入の間に、2つの回避方法を採用して、textを回避しました.イメージタイプデータの転送は、一つは、ntxtフィールドをnvarhar(4000)に変更しました.実際の状況のため、元データのフィールドのデータ長は4000文字を超えていません.もう一つの手段は、イメージタイプのデータをファイルに取り出し、ファイル形式で保存し、ファイルパスをデータベースに保存する方法です.
=============================================================================================================================
Function makeattch(fileContentType,filevalue,i)select case fileContentTypeecase「aplication/msword」ext=「doc」case「aplication/vnd.ms-excel」ext=「exl」case「appcase」case「appcase」case「appcase」case「appcase」case」case「appcase」case「appplication/appcase「appcase」case」case」case「appcase」case「appcase」case」case「appplication/vpliczip-comppresed」ext=「zip」case「image/gif」ext=「gif」case「image/pjpeg」ext=「jpg」case「text/plin」ext=「txt」case elseext=「x」end selectief ext<>「x」thenset fso=server.createobject(「FileSystemObject」)fName=「atech」&i&i&"""&extDiDiDiDiDiDiscr=「d.efifitDiscscscscDiDiDisc=「d:atDisceeeefitDisceeeeeeeeeeeeffffffffffffffffffftDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDiDisc ists(Dir&fName)The nSet stram 1=Server.reate Object(「ADODB.Stream」)strum 1.Openstrm 1.Type=1'Binarystram 1.Write filevaluestrm 1.SaveToFile Dir&fName、2 Set strem 1=Nothingmend ifmaketch=fNamend ifend function
=====================================================================================================================
この関数には3つの入力パラメータがあります.一つ目はファイルのcontentType、二つ目はファイルのバイナリ値、三つ目はファイル名を区別できる変数です.まずcontentTypeに基づいて保存されたファイルの拡張子名を決定してから、バイナリ値を指定ファイル名のファイルに保存し、ファイル名を出力パラメータとして返します.mysqlと書いたデータベースに保存して、大成功を収めました.