2015-10-20 3 views
0

У меня есть огромная таблица tableA в моей базе. Я должен извлечь записи, сделанные в этом tableA, userA.Извлечение данных из SQL Server, отфильтрованных по имени пользователя

Моя цель - добавить эти данные на еще один сервер, где мы даем сборку.

Запрос

select * 
from tableA 
where name = 'userA' 

даст операторов выбора. Но как получить инструкции вставки как скрипт, чтобы при запуске в новом db все записи были вставлены в новую таблицу?

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

+0

почему генерировать сценарии? в sql встроен скрипт генерации, где вы можете получить все данные из 1 таблицы. – Japongskie

+0

Этот инструмент предоставит данные для всей таблицы, которая включает записи от других пользователей. И эта таблица содержит 1 миллион записей – user1907849

+0

Я вижу, это новый db на том же сервере? , если это тот же сервер, вы можете сделать это напрямую, вызвав имя базы данных или используя синонимы – Japongskie

ответ

0

Вам нужен сценарий для вставки в новую таблицу (TableB) из таблицы A? Если таблица в том же сервере, вам нужно всего лишь сделать:

Insert into TableB (Col1, Col2, Col3) 
select Col1, Col2, Col3 from TableA 

Если таблицы в другом сервере. Во-первых, вы должны сделать Linked Server между серверами и после выполнения скрипта

Insert into Server2.TableB (Col1, Col2, Col3) 
select Col1, Col2, Col3 from Server1.TableA 
0

В качестве отправной точки, если вы не имеете столбцы с NULL значения, которые вы могли бы попробовать эту последовательность запросов:

#get fields in a mysql variable 

select GROUP_CONCAT(CONCAT('`', `column_name`, '`')) 
from `information_schema`.`COLUMNS` where TABLE_NAME='tableA' into @fields; 

#get the query which will generate the insert command in a variable 

select CONCAT("SELECT CONCAT(\'INSERT INTO tableA(",@fields, 
")VALUES(\\\'\',CONCAT_WS(\"\',\'\",",@fields, 
"),\"\');\") as `INSERT COMMAND` from `tableA` where `name`='userA'") 
into @generateInsertCommand; 

#execute the query which will generate insert command 

PREPARE stmt FROM @generateInsertCommand; 
EXECUTE stmt; 

он должен генерировать что-то вроде этого:

INSERT INTO tableA(`id`,`date1`,`int1`,`name`)VALUES('4','2015-10-21','127','userA'); 
INSERT INTO tableA(`id`,`date1`,`int1`,`name`)VALUES('5','2015-10-20','327','userA'); 
Смежные вопросы