Frage

Ich muss im Grunde wissen, wie SQL-Code in Access zu importieren. Ich habe eine Art und Weise versucht, aber das erfordert mir einen Tisch und einen Wert zu einer Zeit, zu tun, was viel Zeit in Anspruch nimmt.

Kann mir jemand helfen?

War es hilfreich?

Lösung

Nun, vor ein paar Tagen habe ich benötigt, um Daten aus einer Access-Datenbank auf SQL verschieben (Gegenteil dessen, was Sie tun). Ich fand es einfacher, ein einfaches Skript zu schreiben, die Daten aus meiner Access-Datenbank lesen würde und in SQL einfügen.

Das glaube ich nicht tun, was Sie tun müssen, ist anders.

Ich weiß nicht, ob es helfen wird, aber ich Entsendung meinen Code (Es ist eine einfache C # Funktion). Sie können nur die Verbindungen ändern und es wird funktionieren. Natürlich hatte ich nur drei Felder, damit ich sie hart codiert. Sie können das gleiche für Ihr Db-Schema tun.

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!";

}

Andere Tipps

Wenn Sie versuchen, Daten zu importieren, anstatt SQL-Code (siehe Duffymo Antwort), gibt es zwei Möglichkeiten.

Man ist zu gehen, wo die Daten und Dump eine CSV-Datei und importieren, die als Duffymo reagiert.

Die andere ist eine Tabelle Verbindung von der Access-Datenbank eine Tabelle in der Quelldatenbank zu erstellen. Wenn die beiden Datenbanken miteinander auf diese Weise sprechen, werden Sie die Daten in der entfernten Tabelle verwenden können, als ob es in der Access-Datenbank waren.

SQL-Code? Oder Daten? „Ein Tisch und ein Wert“ macht ich denke, es ist die letztere ist. Wenn ja, würde ich vorschlagen, die Daten aus in eine CSV-Datei Dumping und dass in Access-Tabellen zu importieren.

Oder vielleicht ein Tool wie Microsoft DTS mit abzubilden und die Daten zwischen Quellen zu bewegen. Das wäre die beste Idee.

Ich denke, Sie sprechen über „Import“ sowohl Struktur als auch Daten von SQL zu ACCESS. ACCESS akzeptiert keinen Standard TSQL Skripte, die Sie direkt von Ihrer SQL-Datenbank generieren könnten. Es gibt einige kommerzielle Produkte wie EMS , dass mehr oder weniger die Arbeit für Sie tun. EMS hat einen Datenexporteur Modul, das Ihre SQL-Daten in verschiedenen Formaten erfolgen, einschließlich Access.

Eine andere Möglichkeit wäre eine Access-Datei zu öffnen und einige grundlegende VBA-Code schreiben, die Vorteile der DoCmd.TransferDatabase Methode nehmen, wo Sie einen Link oder kopieren können Tabellen aus anderen Datenbanken in Access.

ich habe vergessen, wenn diese Methoden auch die Übertragung eines ‚sauberen‘ Datenbankmodell ermöglichen, einschließlich der Primärschlüssel und Beziehungen ... Sie werden es einen Versuch geben haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top