首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SQL代码导入到Access 2007

将SQL代码导入到Access 2007
EN

Stack Overflow用户
提问于 2009-01-06 09:25:25
回答 4查看 5.2K关注 0票数 0

我基本上需要知道如何将SQL代码导入到Access中。我已经尝试了一种方法,但这需要我一次处理一个表和一个值,这需要花费很多时间。

有人能帮上忙吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-01-06 10:52:09

几天前,我需要将数据从Access数据库转换到SQL (与您正在做的相反)。我发现编写一个简单的脚本来从我的access数据库中读取数据并将其插入到SQL中会更简单。

我不认为做你需要做的事情有什么不同。

我不知道它是否会有帮助,但我发布了我的代码(这是一个简单的C#函数)。您只需更改连接,它就会正常工作。当然,我只有3个字段,所以我对它们进行了硬编码。您可以对您的db架构执行相同的操作。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2009-01-06 11:50:50

如果您尝试导入数据,而不是SQL代码(请参阅Duffymo的响应),则有两种方法。

一种是转到数据所在的位置,转储一个.CSV文件并导入该文件,就像Duffymo回应的那样。

另一种方法是创建从Access数据库到源数据库中的表的表链接。如果这两个数据库以这种方式相互通信,则可以像在Access数据库中一样使用远程表中的数据。

票数 1
EN

Stack Overflow用户

发布于 2009-01-06 10:45:15

SQL代码?还是数据?“一表一值”让我认为是后者。如果是这样,我建议将数据转储到.csv文件中,并将其导入Access表中。

或者使用像微软的DTS这样的工具在源之间映射和移动数据。这将是最好的主意。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/415920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档