Разное

Как перенести данные из одной таблицы в другую: Как в excel перенести данные с одной таблицы в другую

sql — MYSQL запрос для переноса данных из одной таблицы в другую

Вопрос задан

Изменён 1 год 4 месяца назад

Просмотрен 292 раза

Пожалуйста, помогите создать запрос в Mysql для переноса данных 1-го конкретного поля для все значений из старой базы данных в новую, по ключевому полю.

Структура такая:

Старая база bd_old.table_old

Новая база bd_new.table_new

В таблицах обеих баз данных есть поле(столбец) ‘description’

Нужно из старой базы все значения этого поля перенести в новую.

Есть ключевое поле ‘id’ значения которого совпадают в обеих базах.

  • mysql
  • sql

1

Если значения уже есть в новой базе и речь только про обновление, то можно

  1. Через джоин
UPDATE `bd_new. table_new` new
    INNER JOIN bd_old.table_old old ON new.id = old.id
SET new.description = old.description;
  1. Через сабквери (в большинстве случаев более ресурсоемкий чем join)
UPDATE `bd_new.table_new` new
SET description = (
    SELECT old.description
    from bd_old.table_old old
    WHERE old.id = new.id
)

5

Используйте UPDATE совместно с JOIN. таким образом сразу отфильтруете все записи, которые имеют соответствия, и только их и обновите

UPDATE t1
INNER JOIN t2 on t2.id = t1.id
SET t1.description = t2.description

1

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

python — Как ускорить перенос данных из одной таблицы в другую?

Вопрос задан

1 год 4 месяца назад

Изменён 1 год 4 месяца назад

Просмотрен 278 раз

У меня есть два фрейма данных df и res. res получен в результате группировки df по столбцу name. Теперь мне нужно в df переписать дынные из столбца idxmaximum, полученного в таблице res, если значение в столбце name таблицы df совпадает со значением index в таблице res

Пример df таблицы:

NameНоябрьДекабрьФевраль
Алексей151015
Алексей101010
Андрей152515
Алексей151510
Андрей251045

Пример res таблицы:

indexНоябрьДекабрьФевральidxmaximum
Алексей403535Ноябрь
Андрей403560Февраль

Что хочется получить:

NameНоябрьДекабрьФевральnum
Алексей151015Ноябрь
Алексей101010Ноябрь
Андрей152515Февраль
Алексей151510Ноябрь
Андрей251045Февраль

Мой код:

for i in range(df. shape[0]):
    for j in range(res.shape[0]):
        if df.name[i] == res.index[j]:
            df.num[i] = res.idxmaximum[j]

Подскажите, пожалуйста, как можно ускорить данный процесс?

  • python
  • pandas
  • циклы
  • dataframe
  • оптимизация

1

Ответ на уточненный вопрос с приведенным примером данных:

res = df.merge(df.groupby("Name").sum().idxmax(axis=1).reset_index(name="num"), how="left")

результат:

In [112]: res
Out[112]:
      Name  Ноябрь  Декабрь  Февраль      num
0  Алексей      15       10       15   Ноябрь
1  Алексей      10       10       10   Ноябрь
2   Андрей      15       25       15  Февраль
3  Алексей      15       15       10   Ноябрь
4   Андрей      25       10       45  Февраль

3

скорее всего можно обойтись без вспомогательной переменной res, воспользовавшись векторизированным решением — groupby. SeriesGroupBy.transform().

Пример:

In [85]: df = pd.DataFrame([[1, 2, 8], [1, 4, 5], [2, 10, 11], [2, 9, 13]], columns=["id", "v1", "v2"])
In [86]: df
Out[86]:
   id  v1  v2
0   1   2   8
1   1   4   5
2   2  10  11
3   2   9  13
In [87]: df["new"] = df.groupby("id")["v2"].transform("idxmax")
In [88]: df
Out[88]:
   id  v1  v2  new
0   1   2   8    0
1   1   4   5    0
2   2  10  11    3
3   2   9  13    3

NOTE: комментарии по типу «ваш код не работает» / «у меня возникает ошибка» / etc. не принимаются без воспроизводимого примера данных в вопросе. 😏

1

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Перенос данных из одной таблицы в другую

Поиск

Каждому администратору баз данных необходимо передать
данных между таблицами. Это своего рода задача, которая возникает все время. Не только
, администраторы баз данных должны знать, как передавать данные между двумя таблицами на одном и том же сервере
, но они также должны знать, как это сделать с одного сервера на

другой. В этой статье будет рассмотрен ряд различных методов переноса данных
из одной таблицы в другую.

Метод INSERT INTO

Этот метод, как следует из заголовка
, использует оператор INSERT INTO T-SQL для перемещения записей из одной таблицы
в другую. Этот метод является одним из самых простых способов передачи данных.
Этот метод можно использовать не только между таблицами на одном сервере, но и между серверами.

Чтобы использовать этот метод, все, что вам нужно
нужно закодировать оператор INSERT INTO, который идентифицирует целевую таблицу,
и использует оператор SELECT для идентификации данных, которые вы хотите скопировать из исходной таблицы
. Позвольте мне показать вам пример. Скажем, у вас есть две таблицы TABLE1 и
TABLE2, где обе таблицы имеют точно такую ​​же структуру таблиц и находятся в одной и той же базе данных
. В этом случае, чтобы скопировать все строки из TABLE1 в TABLE2, вы должны использовать следующую инструкцию INSERT INTO:

 INSERT INTO TABLE2 SELECT * FROM TABLE1 

Теперь предположим, что вы не хотите, чтобы
копировал все строки, а только те строки, которые соответствуют определенным критериям. Скажем,
, вы хотите скопировать только те строки, где COL1 равен «A». Для этого вам
нужно просто изменить приведенный выше код, чтобы он выглядел следующим образом:

 INSERT INTO TABLE2 SELECT * FROM TABLE1 WHERE COL1 = 'A' 

Посмотрите, как просто скопировать
данные из одной таблицы в другую, используя INSERT Метод INTO? Вы даже можете скопировать
выбранный набор столбцов, если хотите, указав конкретные столбцы
вы хотите скопировать и заполнить, например:

 INSERT INTO TABLE2 (COL1, COL2, COL3) SELECT COL1, COL4, COL7 FROM TABLE1 

Приведенная выше команда копирует
только данные из столбцов COL1, COL4 и COL7 в TABLE1 на COL1, COL2 и COL3
в ТАБЛИЦЕ 2.

Этот метод также можно использовать
для копирования данных из одной базы данных в другую. Для этого вам просто нужно полностью
квалифицировать (<база данных>.<владелец>.<имя таблицы>) имена исходной и
целевой таблиц в операторе INSERT INTO, чтобы определить, какую базу данных вы используете.0009 хотите использовать. Таким же образом можно копировать данные с одного сервера на другой, используя
полных имен связанных серверов (<связанный_сервер>.<база_данных>.<владелец>.<имя_таблицы>).

Метод мастера импорта/экспорта DTS

Другим методом копирования данных
между таблицами является использование служб преобразования данных (DTS). Самый простой способ
сделать это — использовать мастер импорта/экспорта DTS. Вы запускаете Мастер импорта/экспорта DTS
, открывая Диспетчер предприятия, выделив один из 9 ваших0009 зарегистрированных серверов, щелкнув меню «Инструменты», наведите указатель мыши на пункт «Службы преобразования данных
» в раскрывающемся списке, а затем щелкните
«Импорт данных…» или «Экспорт данных…». После этого вы должны увидеть следующее главное меню мастера
:

Чтобы начать указывать критерии передачи данных
, нажмите кнопку «Далее >» в главном меню.
При этом откроется следующее окно:

На этом экране вам нужно
укажите исходный сервер, базу данных и логин, необходимые для доступа к данным, которые вы
хотите скопировать. После того, как вы указали эти элементы, нажмите кнопку «Далее
>». При этом откроется следующее окно:

На этом экране выберите целевой сервер
, на который вы хотите скопировать данные, и введите информацию для входа
и базу данных, куда вы хотите поместить данные. Вы можете указать
локальный сервер, как я сделал выше, или любой сервер, к которому вы можете подключиться со своей
клиентская машина. После того, как ваша целевая информация будет полностью введена, нажмите
кнопку «Далее >». Это вызовет следующее всплывающее окно:

Поскольку в моем примере будет копироваться
, все данные в одной таблице с выбранным первым переключателем соответствуют
. После выбора первого переключателя нажмите кнопку
«Далее >». При этом появится окно ниже:

В этом окне вы указываете
исходная таблица, которую вы хотите скопировать; вы делаете это, устанавливая флажок
рядом с именем. После того, как вы проверите исходную таблицу, вам будет разрешено ввести
информацию о целевой таблице.

Как видно из окна
выше, я выбрал таблицу Northwind.dbo.Suppliers в качестве исходной таблицы
и указал, что целевой таблицей будет новая таблица с именем Suppliers2, которая
будет создана в одна и та же база данных. В столбце «Преобразование» вы можете увидеть
есть кнопка с тремя точками («…»).
Эта кнопка используется для указания любых характеристик преобразования, которые вы желаете использовать для данной передачи данных. При нажатии на эту кнопку отображается следующее окно:

Здесь вы можете увидеть, как мое преобразование
создаст целевую таблицу. Дисплей «Mappings» показывает макет для
новой целевой таблицы. По умолчанию при создании целевой таблицы
эти столбцы сопоставления будут такими же, как и в исходной таблице. Вы можете изменить
характеристики столбца здесь, если хотите. Вы также можете нажать кнопку «Редактировать
SQL…», чтобы изменить инструкцию «CREATE TABLE», которая будет использоваться для создания
целевой таблицы. Вкладка «Преобразования» используется для изменения кода Visual
Basic, который будет выполнять фактическое перемещение данных из исходной таблицы в
таблицу назначения. Модификация кода Visual Basic иногда бывает полезна при
манипулировании данными при их перемещении. Обратите внимание, что если вы передаете данные на
существующей таблицы в целевой базе данных, то радиокнопки «Удалить строки в целевой таблице
» или «Добавить строки в целевую таблицу» не будут
выделены серым цветом. После того, как вы указали всю необходимую информацию о преобразовании
, нажмите кнопку «ОК», которая вернет вас в окно
«Выбор исходных таблиц и представлений» выше. Чтобы продолжить указание критериев копирования данных
в мастере, нажмите кнопку «Далее >»; выполнение этого
вызывает следующее окно:

Здесь вы можете запустить копию данных
немедленно, запланировать запуск копии данных в определенное запланированное время или
просто сохранить спецификацию копии данных в виде пакета DTS. Как правило, если я просто переношу данные, это, как правило, однократное копирование данных, поэтому я использую опцию «Выполнить немедленно». Когда вы нажмете кнопку «Далее >», вы получите
следующее финальное окно мастера импорта/экспорта DTS:

Здесь вы можете просмотреть
«Сводная информация», чтобы убедиться, что характеристики вашей копии верны. Если
это не так, вы можете использовать кнопку «< Назад», чтобы исправить вашу спецификацию
. Если вы удовлетворены характеристиками копии, нажмите
кнопку «Готово», чтобы завершить работу мастера. Как видите, мастер DTS имеет
различных опций, позволяющих копировать данные из одной исходной таблицы в другую.

Метод массовой вставки BCP

Этот метод копирует данные из
источник в целевую таблицу в двухэтапном процессе. Первый шаг —
, чтобы использовать BCP для вывода данных из исходной таблицы в текстовый файл. Затем на втором шаге
используется команда BULK INSERT для вставки записей в целевую таблицу
из текстового файла. Позвольте мне привести пример для вас.

Давайте сделаем аналогичный пример
, как мы делали с мастером импорта/экспорта DTS, за исключением того, что я собираюсь скопировать таблицу Northwind.dbo.Orders
в таблицу с именем Northwind.dbo.Orders2 на том же сервере. Первые 9Шаг 0009 этого процесса — передача данных BCP. BCP — это утилита командной строки. Его
можно выполнить из Query Analyzer с помощью расширенной хранимой процедуры «xp_cmdshell»,
для отправки команды BCP в командную оболочку Windows. Чтобы выполнить это
, вы должны запустить следующий код в Query Analyzer:

 таблицу Northwind.dbo. Orders в плоский файл с именем c:\temp\Orders.txt. 
Опции «-S» определяют сервер, с которого будут экспортироваться данные, в данном случае
«galser01». Параметр «-T» говорит о создании доверенного соединения. Параметр «-n»
указывает BCP записывать данные в собственном формате. После создания текстового файла
с помощью приведенной выше команды BCP вы можете развернуться и загрузить данные
в таблицу Northwind.dbo.Orders2, используя следующий код:

 
выберите * в Northwind.dbo.Orders2 из Northwind.dbo. Заказы, где 1=2
Массовая вставка Northwind.dbo.Orders2 из 'c:\temp\Orders.txt'
с (DATAFILETYPE = ‘native’)

Первая команда в приведенном выше сценарии
, инструкция SELECT, создает пустую таблицу Orders2 в базе данных Northwind
. Это необходимо, поскольку для выполнения BULK INSERT требуется, чтобы целевая таблица
существовала, в противном случае возникает ошибка. Приведенный выше оператор BULK INSERT идентифицирует
целевую таблицу «Northwind. dbo.Order2», а в предложении FROM он идентифицирует загружаемый файл данных
, в данном случае «c:\temp\Orders.txt». Последний параметр
указан как DATAFILETYPE, который указывает, что входной файл будет содержать
данных в собственном режиме.

Опять же, этот пример
только перемещает данные из одной таблицы в другую в той же базе данных. Этот же метод
можно использовать для перемещения данных из одной базы данных в другую или с одного сервера
на другой. Кроме того, существуют другие параметры, которые можно использовать с BCP и
BULK INSERT для вывода и ввода данных в режиме, отличном от собственного.

Вывод

Как видите, существует
способов перемещения данных из одной таблицы в другую. Некоторые параметры лучше
, чем другие, в зависимости от того, какие данные перемещаются, и объема. Метод INSERT
INTO не очень быстр для больших объемов записей, тогда как метод
BCP/BULK INSERT может быстро загружать большие объемы записей. Если вы предпочитаете
метод, управляемый графическим интерфейсом, то вам подойдет метод импорта/экспорта DTS. Есть
других методов, которые вы могли бы использовать, но эти три должны дать вам
с альтернативами в зависимости от ваших критериев перемещения данных.

»


Просмотреть все статьи обозревателя Грегори А. Ларсена

Как копировать таблицы из одной базы данных в другую в SQL Server

В некоторых случаях вас как администратора баз данных просят скопировать схему и содержимое определенных таблиц из базы данных в другую в том же экземпляре или в другом экземпляре SQL, например, скопировать определенные таблицы из рабочей базы данных в DEV. один для тестирования или устранения неполадок.

SQL Server предлагает множество методов, которые можно использовать для выполнения процесса копирования данных таблицы и схемы. Чтобы пройти каждый из этих методов, мы рассмотрим следующий сценарий:

  • Хостинг SQL Server: localhost.
  • Обе базы данных размещены в одном экземпляре SQL Server 2017.
  • Исходная база данных: AdventureWorks2018
  • База данных назначения: SQLShackDemo

The tables that will be copied from the source database to the destination one are:

Department , Employee , EmployeeDepartmentHistory and EmployeePayHistory under the HumanResources schema.

Методы копирования таблиц:

Использование запроса SELECT INTO

Чтобы скопировать наши таблицы из базы данных AdventureWorks2018 в базу данных SQLShackDemo , мы можем использовать SQL-оператор Select into . Этот оператор сначала создаст таблицы в целевой базе данных, а затем скопирует данные в эти таблицы. Если вам удастся скопировать объекты базы данных, такие как индексы и ограничения, вам необходимо создать сценарий для него отдельно, после чего вам необходимо применить сценарии к целевой базе данных.

In our example, to copy the Department , Employee , EmployeeDepartmentHistory and EmployeePayHistory tables under the HumanResources schema from the AdventureWorks2018 database to the SQLShackDemo , мы запустим следующий скрипт:

1

2

3

4

5

6

7

8

9 10

10

Создание схемы Humanresources

GO

SELECT * Into SQLSHACKDEMO.HUMANRESOURCES.Department от

AdventureWorks2018.humanResources. departments

Select * with SqlShackeReSeReSeReSources.HomanResources.0003

SELECT * into SQLSHACKDEMO.HUMANRESOURCES.EmployeEpartmentHistory от

AdventureWorks2018.humanresources.employeEpartmentHistory

Select * into Sqlshackdemo.humanresourcesourcesourcesourcesourcesourcesourcesourcesourcesourcesourcesyr

Столбцы в целевых таблицах создаются в порядке, указанном в операторе select. Все эти столбцы имеют точное имя, тип данных, свойство допустимости значений NULL и значение столбца, как и в исходной таблице.

Если какая-либо из таблиц содержит столбец Identity, новый столбец в целевой таблице унаследует свойство Identity без необходимости включения Identity_Insert.

Это допустимо в большинстве случаев, если оператор Select не содержит Join, вы не используете Union для объединения нескольких операторов Select, столбец Identity не упоминается много раз в вашем операторе select или источником этого столбца Identity не является удаленный источник данных.

Если какое-либо из этих условий выполняется, столбец будет создан со свойством Not null вместо наследования требуемого свойства Identity.

Чтобы решить эту проблему с идентификацией, вы можете использовать функцию Identity SQL в операторе select для создания столбца Identity.

Использование мастера экспорта/импорта SQL Server

Другой метод, который можно использовать для копирования таблиц из исходной базы данных в целевую, — это мастер экспорта и импорта SQL Server, доступный в SQL Server Management Studio. У вас есть выбор: экспортировать из исходной базы данных или импортировать из целевой для переноса данных:

  1. В SQL Server Management Studio щелкните правой кнопкой мыши базу данных AdventureWorks2018 в Object Explorer , затем в Tasks выберите команду Export Data :

  2. В шаге Выберите источник данных мастера импорта и экспорта SQL Server укажите имя источника Server , аутентификацию , который будет использоваться для подключения к исходному серверу, и имя исходной базы данных , затем нажмите кнопку Next :

  3. На шаге Choose a Destination мастера импорта и экспорта SQL Server укажите имя целевого сервера , метод аутентификации , который будет использоваться для подключения к целевому серверу, и имя целевой базы данных , затем нажмите Следующая кнопка :

  4. На шаге Specify Table Copy or Query мастера импорта и экспорта SQL Server выберите параметр Копировать данные из одной или нескольких таблиц или представлений и нажмите кнопку Далее :


  5. На шаге Select Source Tables and Views мастера импорта и экспорта SQL Server выберите таблицы, которые будут скопированы из выбранной исходной базы данных в целевую:

  6. Чтобы убедиться, что таблицы будут созданы в целевой базе данных, нажмите кнопку Edit Mappings и убедитесь, что установлен флажок Создать целевую таблицу , и если какая-либо из ваших таблиц содержит столбец Identity, обязательно установите флажок Включить вставку идентификационных данных , затем нажмите кнопку OK . Если у вас есть более одной таблицы для экспорта в целевую базу данных, вам необходимо пройти 9 шагов.0213 Edit Mappings проверить таблицу за таблицей:

  7. На шаге Select Source Tables and Views нажмите кнопку Next после проверки всех таблиц с помощью Edit Mappings

  8. На шаге Сохранить и запустить пакет нажмите кнопку Далее :


  9. На шаге Complete the Wizard нажмите кнопку Готово кнопка:

  10. После успешного завершения выполнения вы можете просмотреть шаги, предпринятые для переноса таблиц, и количество переданных записей. Просмотрите шаги и сообщения, если ошибки нет, нажмите кнопку Close :

Этот метод является быстрым способом копирования таблиц из исходной базы данных в целевую, если вы организуете копирование таблиц, не заботясь об отношениях и порядках таблиц.

При использовании этого метода индексы и ключи таблиц не будут переданы. Если вы заинтересованы в его копировании, вам необходимо сгенерировать сценарии для этих объектов базы данных.

Если это внешние ключи, соединяющие эти таблицы вместе, вам необходимо экспортировать данные в правильном порядке, иначе мастер экспорта завершится ошибкой.

Использование сценариев создания

SQL Server предоставляет другой способ создания сценария для баз данных SQL Server с его объектами и данными. Этот скрипт можно использовать для копирования схемы таблиц и данных из исходной базы данных в целевую в нашем случае.

  1. Используя SQL Server Management Studio, щелкните правой кнопкой мыши исходную базу данных в Object Explorer , затем в Tasks выберите команду Generate Scripts :

  2. На шаге Choose Objects выберите параметр Select Specific DatabaseObjects , чтобы указать таблицы, для которых вы будете генерировать сценарий, затем выберите таблицы, отметив их галочкой рядом с каждой из них, и нажмите кнопку Следующая кнопка :

  3. На шаге Set Scripting Options укажите путь, по которому вы сохраните сгенерированный файл сценария, и нажмите кнопку Advanced :

  4. В появившемся окне Advanced Scripting Options укажите Схема и данные как Типы данных для сценария:


    Отсюда вы можете решить, хотите ли вы использовать скрипты для индексов и ключей в ваших таблицах.

  5. Нажмите кнопку OK и, вернувшись к шагу Advanced Scripting Options , нажмите кнопку Next

  6. Просмотрите шаг Summary и нажмите кнопку Next :

  7. Вы можете отслеживать ход выполнения шага Save Scripts . Если ошибок нет, нажмите кнопку Finish и вы найдете файл скрипта по указанному пути:

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

Использование сочетания ApexSQL Diff и ApexSQL Data Diff

ApexSQL Diff — полезный инструмент SQL, который можно использовать для поиска различий между базами данных со стороны схемы и создания сценария синхронизации для создания этих таблиц в целевой базе данных в правильном порядке.

ApexSQL Data Diff также является еще одним инструментом SQL, который можно использовать для поиска различий между базами данных со стороны данных и создания сценария синхронизации для вставки данных в целевые таблицы базы данных с учетом столбцов Identity.

Мы можем воспользоваться преимуществами этих двух инструментов вместе, чтобы сгенерировать необходимые сценарии для создания копируемых таблиц с их объектами и скопировать данные из исходных таблиц в целевые, выполнив следующие действия:

  1. Запустите инструмент ApexSQL Diff .
  2. На вкладке Источники данных окна Новый проект укажите имя исходного сервера, имя исходной базы данных и метод аутентификации, используемый для подключения к исходному серверу. Вам необходимо указать действительное имя пользователя и пароль, если вы выбираете аутентификацию SQL Server.

    Также укажите имя целевого сервера, имя целевой базы данных и метод аутентификации, используемый для подключения к целевому серверу. Вам необходимо указать действительное имя пользователя и пароль, если вы выбираете аутентификацию SQL Server.

    Вы можете изменить роль каждого сервера, указанного в качестве исходного или целевого, нажав кнопку Reverse под источниками данных:


  3. После того, как все настроено, нажмите кнопку Сравнить .

    Появится главное окно приложения, которое содержит сетку результатов с объектами, которые являются общими для двух баз данных, и объекты существуют в одной из баз данных, но не существуют во второй:

    В нашем примере нас интересуют объекты, которые существуют в базе данных AdventureWorks2018 и не существуют в базе данных SQLShackDemo , где мы можем найти таблицы для копирования.

  4. Разверните только объекты, существующие в базе данных AdventureWorks2018 , и выберите таблицы, которые вы будете копировать:

  5. После проверки таблиц нажмите кнопку Synchronize на вкладке Home :


  6. На шаге Направление синхронизации мастера синхронизации нажмите кнопку Далее , если вы не хотите менять направление синхронизации:

  7. На шаге Dependencies мастера синхронизации снимите флажок Включить зависимые объекты базы данных , если вы не хотите создавать скрипты для связанных таблиц, и нажмите кнопку Далее :

  8. На шаге Параметры вывода мастера синхронизации выберите действие Создать сценарий синхронизации , если вы хотите сгенерировать сценарий и запустить его вручную, или действие Синхронизировать сейчас , чтобы позволить инструменту запустить сценарий на целевой сервер напрямую и нажмите кнопку Следующая кнопка :

  9. На этапе Сводка и предупреждение мастера синхронизации просмотрите Действия и нажмите кнопку Создать сценарий :

    Теперь скрипт для создания таблиц базы данных с ее объектами сгенерирован в правильном порядке. Вы можете просто запустить этот скрипт в целевой базе данных, чтобы создать таблицы, щелкнув Кнопка Выполнить :

  10. Запустите инструмент ApexSQL Data Diff .

  11. На вкладке Источники данных окна Новый проект укажите имя исходного сервера, имя исходной базы данных и метод аутентификации, используемый для подключения к исходному серверу. Вам необходимо указать действительное имя пользователя и пароль, если вы выбираете аутентификацию SQL Server.

    Также укажите имя целевого сервера, имя целевой базы данных и метод аутентификации, используемый для подключения к целевому серверу. Вам необходимо указать действительное имя пользователя и пароль, если вы выбираете аутентификацию SQL Server.

    Вы можете изменить роль каждого сервера, указанного в качестве исходного или целевого, нажав кнопку Reverse :


  12. После того, как все настроено, нажмите Кнопка сравнения

    Появится главное окно приложения, содержащее различия данных между таблицами в исходной и целевой базах данных в дополнение к идентичным и несопоставимым данным.

    Здесь нас интересуют различия данных между таблицами в исходной и целевой базах данных, так как на предыдущих шагах мы создали схему этих таблиц, но они все еще пусты.

  13. В таблице результатов различий выберите таблицы, данные которых необходимо скопировать в целевую базу данных, затем нажмите кнопку Synchronize на вкладке Home :

  14. На шаге Направление синхронизации мастера синхронизации нажмите кнопку Далее , если вы не хотите менять направление синхронизации:

  15. На шаге Параметры вывода мастера синхронизации выберите действие Создать сценарий синхронизации , если вы хотите создать сценарий и запустить его вручную, или действие Синхронизировать сейчас , чтобы позволить инструменту запустить сценарий на конечный сервер и нажмите кнопку Next :

  16. На шаге Сводка и предупреждения мастера синхронизации , просмотрите действия и нажмите кнопку Создать скрипт :

    Теперь сгенерирован сценарий для вставки таблиц базы данных, обрабатывающий вставку идентификаторов. Вы можете просто запустить этот скрипт в целевой базе данных, нажав кнопку Execute , чтобы вставить данные таблиц:

Сочетание ApexSQL Diff и ApexSQL Data Diff 9Инструменты 0214 полезны для копирования таблиц базы данных SQL путем создания полных сценариев для схемы этих таблиц с индексами и ключами в правильном порядке, а также данных таблиц, обрабатывающих вставку столбца Identity.

Использование сценария ApexSQL

Другим полезным инструментом, предоставляемым ApexSQL , который можно использовать для копирования данных и схемы таблиц SQL Server из исходной базы данных в целевую, является инструмент ApexSQL Script . Этот хороший инструмент создаст сценарий для схемы таблиц базы данных и данных с индексами и ключами этих таблиц, обрабатывающих вставку столбца Identity.

  1. Запустите инструмент ApexSQL Script .
  2. На вкладке Select databases окна New project укажите имя исходного сервера и метод аутентификации, используемый для подключения к исходному серверу, и нажмите кнопку Connect :

    Если вы выбираете аутентификацию SQL Server, вам необходимо указать действительное имя пользователя и пароль.

  3. Список всех баз данных, размещенных на вашем сервере, будет отображаться в правом списке баз данных. Выберите имя исходной базы данных, которое равно AdventureWorks2018 в нашем примере:

  4. На вкладке Параметры в разделе Данные выберите параметр Установить вставку удостоверения на в подразделе Общие и Вставить из строки Сценарий как подраздел и нажмите Загрузить кнопка :

  5. После загрузки базы данных по умолчанию Показан вид структуры . Выберите таблицы, которые вы скопируете в целевую базу данных, и нажмите кнопку Data на вкладке Home в разделе View :


  6. В представлении Данные выберите те же таблицы, что и в представлении Структура , чтобы данные из этих таблиц также были включены:


  7. После того, как все настроено, нажмите 9Кнопка 0213 Script на вкладке Home :


  8. Выберите Структура и данные в качестве режима сценариев на первом шаге мастера сценариев и нажмите кнопку Далее :

  9. Выберите SQL-скрипт в качестве типа вывода , в мастере сценариев и нажмите кнопку Next :


  10. В окне Зависимости снимите флажки со всех зависимых объектов или оставьте все отмеченными и нажмите кнопку Далее :


  11. На шаге Параметры сценария SQL выберите параметр Открыть сценарий в редакторе , а затем нажмите кнопку Создать :

    Теперь сгенерирован завершенный единый скрипт. Просто запустите его в целевой базе данных, и таблицы будут полностью скопированы. Вы можете просмотреть сценарий, чтобы проверить сценарии создания таблиц в правильном порядке, как показано ниже:

    Кроме того, вы можете найти операторы Insert для данных таблиц следующим образом:

ApexSQL Script — очень полезный инструмент, который можно использовать для копирования таблиц базы данных SQL Server из исходной базы данных в целевую без каких-либо усилий с вашей стороны по обработке порядка создания таблиц. Кроме того, с вашей стороны не требуется никаких действий для обработки вставки идентификационных данных.

Вывод:

Как видите, для копирования таблиц из исходной базы данных в целевую можно использовать несколько методов, включая схему и данные. Большинство этих инструментов требуют больших усилий с вашей стороны для копирования объектов таблиц, таких как индексы и ключи.

Добавить комментарий

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