2009-01-06 11 views
0

Je dois essentiellement savoir comment importer du code SQL dans Access. J'ai essayé dans un sens mais cela m'oblige à faire une table et une valeur à la fois, ce qui prend beaucoup de temps.Importation de code SQL dans Access 2007

Quelqu'un peut-il aider?

+1

Qu'entendez-vous par "code SQL"? Définitions de table? Requêtes? – splattne

Répondre

0

Eh bien, il y a quelques jours, j'avais besoin de déplacer des données d'une base de données Access vers SQL (inverse de ce que vous faites). J'ai trouvé plus simple d'écrire un script simple qui lirait les données de ma base de données d'accès et l'insérerait dans SQL.

Je ne pense pas que faire ce que vous devez faire est différent.

Je ne sais pas si cela va vous aider, mais je poste mon code (c'est une simple fonction C#). Vous pouvez simplement changer les connexions et cela fonctionnera. Bien sûr, je n'avais que 3 champs, donc je les ai codés en dur. Vous pouvez faire la même chose pour votre schéma 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!"; 

} 
0

Code SQL? Ou des données? "Une table et une valeur" me fait penser que c'est le dernier. Si c'est le cas, je suggère de jeter les données dans un fichier .csv et de les importer dans les tables Access.

Ou peut-être d'utiliser un outil comme Microsoft DTS pour mapper et déplacer les données entre les sources. Ce serait la meilleure idée.

1

Si vous essayez d'importer des données, plutôt que du code SQL (voir la réponse de Duffymo), il y a deux façons. On doit aller là où se trouvent les données et vider un fichier .CSV et l'importer, comme l'a répondu DuffyMo.

L'autre consiste à créer un lien de table à partir de la base de données Access vers une table dans la base de données source. Si les deux bases de données se parlent de cette façon, vous pouvez utiliser les données de la table distante comme si elles se trouvaient dans la base de données Access.

0

Je suppose que vous parlez d '"importer" à la fois la structure et les données de SQL vers ACCESS. ACCESS n'accepte pas les scripts TSQL standard que vous pouvez générer directement à partir de votre base de données SQL. Il existe des produits commerciaux comme EMS qui peuvent plus ou moins faire le travail pour vous. EMS dispose d'un module d'exportation de données qui peut prendre vos données SQL dans différents formats, y compris Access. Une autre méthode consiste à ouvrir un fichier Access et à écrire du code VBA basique, en tirant parti de la méthode DoCmd.TransferDatabase, dans laquelle vous pouvez lier OU copier des tables d'autres bases de données dans Access.

J'ai oublié si ces méthodes permettent également le transfert d'un modèle de base de données «propre», y compris les clés primaires et les relations ... Vous devrez essayer.

Questions connexes