Форум программистов, компьютерный форум, киберфорум
Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 182
1

Создать таблицу и скопировать данные

13.07.2020, 02:07. Показов 828. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

Подскажите, как создать вторую таблицу в базе и скопировать в нее данные?

например, есть файл базы 004 с таблицей 004 и поля p_num p_num2.
Как создать в том же файле базы вторую таблицу 005 и скопировать туда поля p_num p_num2?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2020, 02:07
Ответы с готовыми решениями:

Скопировать данные таблицы и перенести их в другую вновь созданную таблицу этой же БД
Программисты добрые, помогите! Есть бд, форма отображения- с шарп. Необходимо скопировать данные...

Как скопировать данные запроса в таблицу
Всем добрый день. Помогите пожалуйста решить задачку. В базе данных Access созданы 2 таблицы -...

Сделать выборку, потом скопировать данные из таблицы 1 в таблицу 2 а данные выборки удалить из таблицы 1
Нужно сделать выборку в таблице 1, потом те данные которые выдаст выборка в таблице 1 скопировать в...

Как из .txt файла скопировать данные в Таблицу в БД в MSSQL?
Здравствуйте, имеется файл .txt, нужно все имеющиеся в нем данные скопировать в таблицу:

9
1976 / 1410 / 365
Регистрация: 26.06.2017
Сообщений: 4,009
13.07.2020, 08:16 2
Выполни два запроса
T-SQL
1
2
CREATE TABLE dbo.005 (p_num int, p_num2 int)
INSERT INTO dbo.005 SELECT p_num, p_num2  FROM dbo.004
Добавлено через 1 минуту
Ознакомься с этим
0
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 182
15.07.2020, 01:53  [ТС] 3
а dbo это имя файла базы?

Добавлено через 14 минут
я пишу -
VB.NET
1
CREATE TABLE dbo.005 (p_num int, p_num2 int)
но он создает файл базы dbo а таблица в нем тоже dbo называется а не 005
0
1136 / 881 / 152
Регистрация: 25.07.2015
Сообщений: 1,959
15.07.2020, 06:15 4
Цитата Сообщение от sergg45 Посмотреть сообщение
а dbo это имя файла базы?
Нет , это схема
Всё , что написано ниже касается только MSSQL
Например
data.dbo.[table1].[pole1] или dbo.[table1].[pole1], где
data - имя базы данных
dbo - схема (присваивается по умолчанию), где указывается владелец
table1 - название таблицы
pole1 - название поля таблицы
Начиная с MSSQL 2005 указывать имена таблиц можно и напрямую , только по имени.
но правила хорошего тона предполагают использование схемы в обращении к объекту.
Т.е. записи при обращении к таблице типа dbo.[table1].[pole1] и [table1].[pole1] будут равнозначны.
Квадратные скобки в названиях талиц и полей не обязательны , но крайне желательны,
т.к. сервер не всегда способен отличить название от ключевого слова или инструкции.
Так же при коротком обращении рекомендуется использовать инструкцию USE database,
которая однозначно идентифицирует используемую БД.
Если вы используете одну БД , то наличие этой инструкции не критично , но
если выборка одновременно идёт по нескольким БД , то могут возникнуть ,и скорее всего возникнут, проблемы.
Резюмирую :
Блок запросов , которые вам представил Uswer, будет выглядеть примерно так

SQL
1
2
3
4
5
6
USE DATA  -- имя вашей БД
GO
CREATE TABLE  dbo.[005] (p_num INT, p_num2 INT)
GO
INSERT INTO [005] 
SELECT [004].[p_num], [004].[p_num2]  FROM [004]
Я намеренно убрал схему dbo в запросе INSERT , чтобы показать , что обращение к объектам с ней или без неё
интерпретируется сервером равнозначно.
Так же настоятельно советую в ситуациях как сейчас , когда с разных таблиц используются
поля с одинаковыми названиями, явно указывать имя таблицы в обращении, привыкайте
изначально писать правильно.
В данном случае это не критично , но в более сложных запросах без явного указания
возникнут сложности идентификации.
1
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 182
17.07.2020, 08:07  [ТС] 5
а как это в visual basic .net сделать?
я пишу так:
VB.NET
1
tb = getdbasetable("create table 008.dbo.005 (p_num2 int);")
он же должен создать файл с именем 008 и таблицей 005, а он создает файл 008 с таблицей 008
образец файла прикрепляю
Вложения
Тип файла: rar 008.rar (123 байт, 5 просмотров)
0
256 / 209 / 52
Регистрация: 01.08.2016
Сообщений: 815
17.07.2020, 09:09 6
sergg45, Выложи свой VB проект с прикрепленной БД если не трудно. При использовании Database.net с данным кодом создается вторая таблица в одном файле:
SQL
1
CREATE TABLE [004] (p_num INT, p_num2 INT)
другой код копирует значения из одних полей одной таблицы в соответствующие поля вновь созданной таблицы:
SQL
1
2
INSERT INTO [004]([P_NUM1],[P_NUM2])  
SELECT [005].[P_NUM1], [005].[P_NUM2]  FROM [005]
Вот только совместить данные запросы вместе не удается. Ошибку выдает.
0
1136 / 881 / 152
Регистрация: 25.07.2015
Сообщений: 1,959
17.07.2020, 18:05 7
Цитата Сообщение от andrsh Посмотреть сообщение
Вот только совместить данные запросы вместе не удается. Ошибку выдает.
Какая СУБД ? Какую ошибку выдаёт ?
В той транскрипции , как вы написали СУБД воспринимает два запроса как один, разделителя то нет .
Как по вашему СУБД определит , где заканчивается одна инструкция и начинается вторая.
В MSSQL это оператор GO , в MySql , SqLite - ; и т.д.
0
256 / 209 / 52
Регистрация: 01.08.2016
Сообщений: 815
17.07.2020, 19:42 8
Kulma, Судя по ответам на форуме вы специалист по БД, но в данном случае приведенный вами код выше в ответе 4 в данном приложении: Database.net не работает. Выдает ошибку. Операторы
SQL
1
GO
вообще не активны. Я не собираюсь судить о правильности написанного вами кода. Может быть что Database.net кривоватое. Данное приложение позволяет создавать разные типы БД и просматривать их. Однако я пробовал с БД Acsess и данный запрос как у меня нормально отрабатывает в этом приложении. Если будете тестировать данное приложение то где нибудь отпишитесь как оно стоящее или нет на ваш взгляд.
0
1136 / 881 / 152
Регистрация: 25.07.2015
Сообщений: 1,959
17.07.2020, 22:03 9
Цитата Сообщение от andrsh Посмотреть сообщение
приведенный вами код выше в ответе 4 в данном приложении: Database.net не работает. Выдает ошибку.
Я же вас спросил :
Цитата Сообщение от Kulma Посмотреть сообщение
Какая СУБД ?
А так же в посту 4
Цитата Сообщение от Kulma Посмотреть сообщение
Всё , что написано ниже касается только MSSQL
GO - это инструкция исключительно для MSSQL
Database.net - это не СУБД , это UI оболочка , в которой вы можете манипулировать данными
в разных СУБД... ну я думаю вам это и без моих разъяснений известно. ))

Цитата Сообщение от andrsh Посмотреть сообщение
Однако я пробовал с БД Acsess и данный запрос как у меня нормально отрабатывает в этом приложении.
Acsess в качестве разделителя запросов в блоке использует точку с запятой ;
0
1 / 1 / 0
Регистрация: 09.10.2019
Сообщений: 182
31.07.2020, 05:53  [ТС] 10
копирую весь код программы.


VB.NET
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
Imports System.Data.OleDb
Imports System.IO
Public Class Form1
    Public dBaseConnection As New System.Data.OleDb.OleDbConnection
 
 
    Public Function getdbasetable(ByVal SqlString As String) As DataTable
        Dim ReturnableTable As New DataTable
        Try
            OpendBConnection()
            Dim SelectCommand As New System.Data.OleDb.OleDbCommand(SqlString, dBaseConnection)
            Dim TableAdapter As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter
            TableAdapter.SelectCommand = SelectCommand
            TableAdapter.Fill(ReturnableTable)
            Return ReturnableTable
        Catch ex As Exception
            MsgBox(ex.Message & vbCrLf & SqlString, 16, "Error")
            End
        End Try
        Return ReturnableTable
 
    End Function
 
    Public Sub OpendBConnection()
        Try
            Dim ConnectionString As String
            ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\project5(Проверки);Extended Properties=dBase IV"
            dBaseConnection = New System.Data.OleDb.OleDbConnection(ConnectionString)
            If dBaseConnection.State = 0 Then dBaseConnection.Open()
        Catch ex As Exception
            MsgBox(ex.Message, 16, "Ошибка")
        End Try
    End Sub
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim pth As String
        Dim pth1 As String
        Dim pth2 As String
        pth = "C:\project5(проверки)"
        pth1 = "C:\project5(проверки)"
        pth2 = "C:\project5(проверки)"
        IO.Path.Combine(pth, "RR326.dbf")
        IO.Path.Combine(pth, "RR322.dbf")
        Dim ds As New DataSet
        Try
            Dim con As OleDbConnection = New OleDbConnection(GetConnection(pth))
            Dim com1 = New OleDbCommand("SELECT nusl,p_num,date_in,date_out FROM RR326.dbf", con)
            Dim com2 = New OleDbCommand("SELECT date_in,date_out,p_num,nusl FROM RR322.dbf", con)
            con.Open()
            Dim dt1 As New DataTable
            Dim dt2 As New DataTable
            dt1.Load(com1.ExecuteReader())
            dt2.Load(com2.ExecuteReader())
            dt1.Columns.Add("DATE_IN2", GetType(System.DateTime))
            dt1.Columns.Add("DATE_OUT2", GetType(System.DateTime))
            dt1.Columns.Add("p_num2", GetType(System.String))
            dt1.Columns.Add("nusl2", GetType(System.String))
            Dim dtm = Date.MinValue
            For i = 0 To dt2.Rows.Count - 1
                dt1(i).Item(4) = dt2(i).Item(0)
                dt1(i).Item(5) = dt2(i).Item(1)
                dt1(i).Item(6) = dt2(i).Item(2)
                dt1(i).Item(7) = dt2(i).Item(3)
            Next
            For i = dt2.Rows.Count To dt1.Rows.Count - 1
                dt1(i).Item(4) = dtm
                dt1(i).Item(5) = dtm
                dt1(i).Item(6) = dtm
                dt1(i).Item(6) = dtm
            Next
            con.Close()
            ds.Tables.Add(dt1)
            '     CreateDBF(pth, "003", ds)
            'DataGridView1.DataSource = dt1
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
        Try
            Dim tb As DataTable
            'in(select num_hist from RR326 group by num_hist having count(*)>1) 
 
            tb = getdbasetable("create table 008.007 (p_num2 int);")
 
            'tb = getdbasetable("insert into 005 (pnum2)select pnum2 from 005;")
            'tb = getdbasetable("SELECT p_num,p_num2 FROM 004 WHERE p_num IN (SELECT DISTINCT p_num2 FROM 004);")
            'tb = getdbasetable("SELECT p_num,p_num2 FROM 004 WHERE p_num in(select p_num from 004 group by p_num having count(*)>1) ;")
            DataGridView1.DataSource = tb
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
        
    End Sub
    Private Function GetConnection(ByVal path As String) As String
        Return "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path & ";Extended Properties=dBASE IV;"
    End Function
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
    End Sub
End Class
tb = getdbasetable("create table 008.007 (p_num2 int);") - вот тут должен создаться файл базы 008 с таблицей 007, а он создает файл 008 и таблица 008
0
31.07.2020, 05:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.07.2020, 05:53
Помогаю со студенческими работами здесь

Как объединить запрос и скопировать данные в другую таблицу из другой БД?
У меня MySQL 5.7 ========================== есть таблица K в БД firstbd и таблица S в БД ...

Скопировать файл Word и внести в его таблицу данные. (из Excel)
Я прошу кинуть ссылку на какую-нибудь страничку или прямо здесь написать, как управлять файлами...

Скопировать данные из одного листа таблицы в другую таблицу на лист в последнюю не заполненную строку?
Здравствуйте подскажите пожалуйста!!!, как сделать чтобы копировалось из таблицы в таблицу,...

Как скопировать данные из таблицы одной БД Access в такую же таблицу БД Access другой БД Access?
Как с помощью компонента AdoQuery (Delphi7) скопировать данные из таблицы одной БД Access в такую...

Считать данные с файла, и создать таблицу
Задача такая, из тестового документа, или таблицы Excel забрать строку и массив, затем создать...

создать таблицу и ввести в нее данные по номеру
Хочу сделать таблицу-простую-номера столбцов 1 2 3 4 5 6 7 8 9 10 1a 1b 1c 1d 1e...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru