Импорт кода SQL в Access 2007 - PullRequest
0 голосов
/ 06 января 2009

Мне нужно знать, как импортировать код SQL в Access. Я пробовал один способ, но для этого требуется, чтобы я делал одну таблицу и одно значение за раз, что занимает много времени.

Кто-нибудь может помочь?

Ответы [ 4 ]

1 голос
/ 06 января 2009

Если вы пытаетесь импортировать данные, а не код SQL (см. Ответ Даффимо), есть два способа.

Один из них - пойти туда, где находятся данные, выгрузить файл .CSV и импортировать его, как ответил Даффимо.

Другой способ - создать ссылку на таблицу из базы данных Access на таблицу в исходной базе данных. Если две базы данных будут общаться друг с другом таким образом, вы можете использовать данные в удаленной таблице, как если бы они были в базе данных Access.

0 голосов
/ 06 января 2009

Полагаю, вы говорите об "импорте" структуры и данных из SQL в ACCESS. ACCESS не принимает стандартные сценарии TSQL, которые вы можете сгенерировать непосредственно из базы данных SQL. Есть некоторые коммерческие продукты, такие как EMS , которые могут более или менее сделать эту работу за вас. EMS имеет модуль экспорта данных, который может принимать ваши данные SQL в различных форматах, включая Access.

Другим способом было бы открыть файл Access и написать некоторый основной код VBA, используя метод DoCmd.TransferDatabase, где вы можете связать или скопировать таблицы из других баз данных в Access.

Я забыл, позволяют ли эти методы также передавать "чистую" модель базы данных, включая первичные ключи и отношения ... Вам придется попробовать.

0 голосов
/ 06 января 2009

Ну, несколько дней назад мне нужно было перенести данные из базы данных 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!";

}
0 голосов
/ 06 января 2009

код SQL? Или данные? «одна таблица и одно значение» заставляет меня думать, что это последнее. Если так, я бы предложил выгрузить данные в файл .csv и импортировать их в таблицы Access.

Или, возможно, с помощью такого инструмента, как Microsoft DTS, для отображения и перемещения данных между источниками. Это была бы лучшая идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...