powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Копирование данных из таблицы Access в таблицу SQL
13 сообщений из 13, страница 1 из 1
Копирование данных из таблицы Access в таблицу SQL
    #34136179
Anatoly Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Есть 2 таблицы..
Структура одинаковая…
Исходные данные расположенны в базе данных ACCESS, из них надо тупо заливать данные в таблицу SQL сервера… (предварительно сделав транкейт таблицы…) не работет прога, уверен, что как то нетак использую АДО…

КОД (на импорты внимания не обращайте...осталось от экспириментов):
Option Explicit On
Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports ADODB.CursorTypeEnum
Imports ADODB.LockTypeEnum
Imports ADODB.CommandTypeEnum
Imports ADODB.CursorLocationEnum


Module convertion
Sub Main()
Dim cnAccess As ADODB.Connection
Dim cnMSSQL As ADODB.Connection
Dim array As String

cnAccess = New ADODB.Connection()
cnMSSQL = New ADODB.Connection()

cnAccess.Open(ConnectString("Access"))
cnMSSQL.Open(ConnectString("MSSQL"))
'Отчистка таблицы
cnMSSQL.Execute("Truncate table DBO.Traffic")
'Тут грабли
cnMSSQL.Execute("SELECT * INTO DBO.Traffic FROM" & _
[ConnectString("Access")]. & _
[Traffic;]")


cnAccess.Close()
cnAccess = Nothing
cnMSSQL.Close()
cnMSSQL = Nothing
End Sub

Private Function ConnectString(ByVal strDataBaseName As String) As String


Select Case strDataBaseName
Case "MSSQL"
ConnectString = "Provider=sqloledb; Data Source=DB-01; Initial Catalog=traffic; User Id=sa; Password="
Case "Access"
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\traffic_count\traffic.mdb; USER ID=Admin;password="
End Select
End Function
End Module
...
Рейтинг: 0 / 0
Копирование данных из таблицы Access в таблицу SQL
    #34136904
Bigheadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторне работет прога, уверен, что как то нетак использую АДО…

Вы бы хоть симптомы описали. Что значит не работает?????? Ошибку выдает, не выполняет копирование данных или что????

P.S. Я бы для этой задачи использовал DTS.
...
Рейтинг: 0 / 0
Копирование данных из таблицы Access в таблицу SQL
    #34136958
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Ustinov
Код: plaintext
1.
2.
3.
'Тут грабли
        cnMSSQL.Execute("SELECT * INTO DBO.Traffic FROM" & _
        [ConnectString("Access")]. & _
        [Traffic;]")

Вы перед граблями сделайте так:

Код: plaintext
1.
2.
3.
4.
5.
6.
Dim query As String
'...
query = "SELECT * INTO DBO.Traffic FROM" & _
        "[ConnectString("Access")]." & _
        "[Traffic;]"

'Здесь поставьте точку останова и посмотрите, что Вы пытаетесь сервер заставить выполнять
А на сервер уходит запрос:
Код: plaintext
SELECT * INTO DBO.Traffic FROM[ConnectString("Access")].[Traffic;]
Могу сразу примерно сказать, что скажет по этому поводу сервер :-)
А скажет он, что таблица [ConnectString("Access")].[Traffic;] на сервере не обнаружена.
...
Рейтинг: 0 / 0
Копирование данных из таблицы Access в таблицу SQL
    #34137247
Anatoly Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответы... после ряда экспериментов перделал следующим образом:

Dim query As String
'...
query = "SELECT * INTO DBO.Traffic FROM" & _
"[Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\traffic_count\traffic.mdb; USER ID=Admin;password=]." & _
"[Traffic;]"

'Замена экзека граблей

cnMSSQL.Execute("Truncate table DBO.Traffic")
'array = "SELECT * from Traffic"
cnMSSQL.Execute("query")

выводится вот такая строка запроса

"SELECT * INTO DBO.Traffic FROM[Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\traffic_count\traffic.mdb; USER ID=Admin;password=].[Traffic;]"

как это заставить работать, непонятно....
...
Рейтинг: 0 / 0
Копирование данных из таблицы Access в таблицу SQL
    #34137975
Anatoly Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос пока сотается открытым... ничего не могу сделать :) я бездарность....
...
Рейтинг: 0 / 0
Копирование данных из таблицы Access в таблицу SQL
    #34138047
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот Вам пример. Правда он не на бейсике, а на C#. Копирует данные из таблицы TestTable базы данных c:\work\access40.mdb в таблицу Table1 на сервере SQL.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
using System;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;

class Program
{
  static void Main()
  {
    DataSet ds = new DataSet();

    using (OleDbConnection access = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\work\access40.mdb;"))
    {
      using (OleDbCommand cmd = access.CreateCommand())
      {
        cmd.CommandText = "select Id, Name from TestTable";

        access.Open();
        using (OleDbDataReader reader = cmd.ExecuteReader())
        {
          ds.Load(reader, LoadOption.OverwriteChanges, "TestTable");
        }
      }

      using (SqlConnection sql = new SqlConnection(@"Data Source=(local);Initial Catalog=Budget;Integrated Security=True;"))
      {
        using (SqlCommand cmd = sql.CreateCommand())
        {
          cmd.CommandText = "insert Table1 values (@Id, @Name)";
          cmd.CommandType = CommandType.Text;

          cmd.Parameters.Add("@Id", SqlDbType.Int);
          cmd.Parameters.Add("@Name", SqlDbType.VarChar, 10);

          sql.Open();
          cmd.Prepare();

          foreach (DataRow dr in ds.Tables[0].Rows)
          {
            cmd.Parameters["@Id"].Value = dr["Id"];
            cmd.Parameters["@Name"].Value = dr["Name"];
            cmd.ExecuteNonQuery();
          }
        }
      }
    }
  }
}
--
WBR,
RA1OGE
...
Рейтинг: 0 / 0
Копирование данных из таблицы Access в таблицу SQL
    #34138102
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На сервере копировать.

Читать BOL по поводу
OPENROWSET(provider_name,provider_string,query_syntax)
...
Рейтинг: 0 / 0
Копирование данных из таблицы Access в таблицу SQL
    #34138115
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилНа сервере копировать.
Думаю, если бы автору надо было копировать данные на сервере, то он написал бы в конференцию по серверу, а не по ADO.Net. Давайте дождемся от автора разъяснений по этому вопросу.
...
Рейтинг: 0 / 0
Копирование данных из таблицы Access в таблицу SQL
    #34138122
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman S. GolubinДавайте дождемся от автора разъяснений по этому вопросу.

Давайте. Но
query = "SELECT * INTO DBO.Traffic FROM" & _
"[Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\traffic_count\traffic.mdb; USER ID=Admin;password=]." & _
"[Traffic;]"
наводит именно на мысли о сервере....
...
Рейтинг: 0 / 0
Копирование данных из таблицы Access в таблицу SQL
    #34138163
Anatoly Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код планируется исполнять на сервере, где и расположена база Access с данными из программы все обязательно попробую сегодня, отпишусь!
Еще раз всем Вам огромное спасибо..
...
Рейтинг: 0 / 0
Копирование данных из таблицы Access в таблицу SQL
    #34138287
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly UstinovКод планируется исполнять на сервере, где и расположена база Access с данными из программы все обязательно попробую сегодня, отпишусь!
Еще раз всем Вам огромное спасибо..

Если положение акскссной базы часто не меняется - удобнее создать linked server и обращаться к аксессной базе в виде SELECT * FROM mydb...mytable
...
Рейтинг: 0 / 0
Копирование данных из таблицы Access в таблицу SQL
    #34139666
Anatoly Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Огромное спасибо, все заработало, код помог!
...
Рейтинг: 0 / 0
Копирование данных из таблицы Access в таблицу SQL
    #34139669
Anatoly Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;

namespace trafcounter_converter
{
    class Program
    {
        static void Main()
        {
            DataSet ds = new DataSet();

            using (OleDbConnection access = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\project\traffic.mdb;"))
            {
                using (OleDbCommand cmd = access.CreateCommand())
                {
                    cmd.CommandText = "select id, clcGlobalID, Dates, Hours, TDTDate, RealIn, RealOut, RealSum from Traffic";

                    access.Open();
                    using (OleDbDataReader reader = cmd.ExecuteReader())
                    {
                        ds.Load(reader, LoadOption.OverwriteChanges, "TestTable");
                    }
                }
                using (SqlConnection sql = new SqlConnection(@"Data Source=ZLO;Initial Catalog=SMS_XX;Integrated Security=true;"))
                {
                    using (SqlCommand cmd = sql.CreateCommand())
                    {
                        cmd.CommandText = "truncate table Traffic";
                        sql.Open();
                        cmd.Prepare();
                        cmd.ExecuteNonQuery();
                        
                    }
                }

                using (SqlConnection sql = new SqlConnection(@"Data Source=ZLO;Initial Catalog=SMS_XX;Integrated Security=true;"))
                {
                    using (SqlCommand cmd = sql.CreateCommand())
                    {
                        cmd.CommandText = "insert Traffic values (@id, @clcGlobalID, @Dates, @Hours, @TDTDate, @RealIn, @RealOut, @RealSum)";
                        cmd.CommandType = CommandType.Text;

                        cmd.Parameters.Add("@Id", SqlDbType.Int);
                        cmd.Parameters.Add("@clcGlobalID", SqlDbType.Int);
                        cmd.Parameters.Add("@Dates", SqlDbType.DateTime);
                        cmd.Parameters.Add("@Hours", SqlDbType.Int);
                        cmd.Parameters.Add("@TDTDate", SqlDbType.DateTime);
                        cmd.Parameters.Add("@RealIn", SqlDbType.Int);
                        cmd.Parameters.Add("@RealOut", SqlDbType.Int);
                        cmd.Parameters.Add("@RealSum", SqlDbType.Int);

                        sql.Open();
                        cmd.Prepare();

                        foreach (DataRow dr in ds.Tables[ 0 ].Rows)
                        {
                            cmd.Parameters["@Id"].Value = dr["Id"];
                            cmd.Parameters["@clcGlobalID"].Value = dr["clcGlobalID"];
                            cmd.Parameters["@Dates"].Value = dr["Dates"];
                            cmd.Parameters["@Hours"].Value = dr["Hours"];
                            cmd.Parameters["@TDTDate"].Value = dr["TDTDate"];
                            cmd.Parameters["@RealIn"].Value = dr["RealIn"];
                            cmd.Parameters["@RealOut"].Value = dr["RealOut"];
                            cmd.Parameters["@RealSum"].Value = dr["RealSum"];
                            cmd.ExecuteNonQuery();
                        }
                    }
                }
            }
        }
    }
}
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Копирование данных из таблицы Access в таблицу SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]