0

我基本上需要知道如何将 SQL 代码导入 Access。我尝试了一种方法,但这需要我一次做一张表和一个值,这需要很长时间。

任何人都可以帮忙吗?

4

4 回答 4

1

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

一种是去数据所在的地方转储一个 .CSV 文件并将其导入,正如 Duffymo 回应的那样。

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

于 2009-01-06T11:50:50.177 回答
0

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

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

于 2009-01-06T10:45:14.647 回答
0

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

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

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

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 有一个数据导出器模块,可以获取不同格式的 SQL 数据,包括 Access。

另一种方法是打开一个 Access 文件并编写一些基本的 VBA 代码,利用 DoCmd.TransferDatabase 方法,您可以将其他数据库中的表链接或复制到 Access 中。

我忘记了这些方法是否也允许传输“干净”的数据库模型,包括主键和关系......你必须试一试。

于 2009-01-06T13:23:38.790 回答