0

基本的に、SQL コードを Access にインポートする方法を知る必要があります。私は 1 つの方法を試しましたが、一度に 1 つのテーブルと 1 つの値を実行する必要があり、多くの時間がかかります。

誰でも助けることができますか?

4

4 に答える 4

1

SQLコードではなくデータをインポートしようとしている場合(Duffymoの応答を参照)、2つの方法があります。

1つは、データがある場所に移動し、.CSVファイルをダンプして、Duffymoが応答したとおりにインポートすることです。

もう1つは、Accessデータベースからソースデータベースのテーブルへのテーブルリンクを作成することです。2つのデータベースがこのように相互に通信する場合は、Accessデータベースにあるかのようにリモートテーブルのデータを使用できます。

于 2009-01-06T11:50:50.177 に答える
0

さて、数日前、Access データベースから SQL にデータを移行する必要がありました (あなたがしていることの逆です)。Access データベースからデータを読み取り、それを SQL に挿入する単純なスクリプトを作成する方が簡単であることがわかりました。

やるべきことをやるのと変わらないと思います。

役立つかどうかわかりませんが、コードを投稿します (単純な C# 関数です)。接続を変更するだけで機能します。もちろん、フィールドは 3 つしかなかったので、ハードコーディングしました。db スキーマについても同じことができます。

protected void btnProcess_Click(object sender, EventArgs e)
{
    //Open the connections to the access and SQL databases
    string sqlDBCnn = @"Data Source=.\SQLEXPRESS;Integrated Security=True;AttachDBFileName=|DataDirectory|\mydb.mdf;user instance=true";
    string accessDBCnn = @"Provider=Microsoft.Jet.OleDB.4.0;Data Source=C:\mydb.mdb";

    OleDbConnection cnnAcc = new OleDbConnection(accessDBCnn);
    cnnAcc.Open();

    SqlConnection cnnSql = new SqlConnection(sqlDBCnn);
    cnnSql.Open();

    SqlCommand cmSql = new SqlCommand("DELETE tablename", cnnSql);
    cmSql.ExecuteNonQuery();

    //Retrieve the data from the Access Database
    OleDbCommand cmdAcc = new OleDbCommand("SELECT * FROM tablename", cnnAcc);
    OleDbDataReader drAcc = cmdAcc.ExecuteReader();

    using (drAcc)
    {
        if (drAcc.HasRows)
        {
            //Loop through the access database records and add them to the database
            while (drAcc.Read())
            {
                SqlCommand cmdSql = new SqlCommand("INSERT INTO tablename(Category, Head, Val) VALUES(@cat,@head,@val)",cnnSql);

                SqlParameter parCat = new SqlParameter("cat",System.Data.SqlDbType.VarChar,150);
                SqlParameter parHead = new SqlParameter("head",System.Data.SqlDbType.VarChar,150);
                SqlParameter parVal = new SqlParameter("val",System.Data.SqlDbType.VarChar);
                parCat.Value = drAcc["Category"].ToString();
                parHead.Value = drAcc["Head"].ToString();
                parVal.Value = drAcc["Val"].ToString();
                cmdSql.Parameters.Add(parCat);
                cmdSql.Parameters.Add(parHead);
                cmdSql.Parameters.Add(parVal);

                cmdSql.ExecuteNonQuery();
            }
        }
    }

    lblMsg.Text = "<p /> All Done Kapitone!";

}
于 2009-01-06T10:52:08.783 に答える
0

SQLからACCESSへの構造とデータの両方の「インポート」について話していると思います。ACCESS は、SQL データベースから直接生成できる標準の TSQL スクリプトを受け入れません。多かれ少なかれあなたのために仕事をすることができるEMSのようないくつかの商用製品があります. EMS には、Access を含むさまざまな形式の SQL データを取得できるデータ エクスポーター モジュールがあります。

もう 1 つの方法は、Access ファイルを開いて基本的な VBA コードを記述し、DoCmd.TransferDatabase メソッドを利用して、テーブルを他のデータベースから Access にリンクまたはコピーすることです。

これらの方法で、主キーやリレーションを含む「クリーンな」データベース モデルの転送も可能かどうかを忘れていました...試してみる必要があります。

于 2009-01-06T13:23:38.790 に答える