2009-09-15 4 views
1

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

ответ

0

SELECT ... LIMIT n OFFSET m; является стандартным способом извлечения огромных объемов данных небольшими кусками. Но, читая ваш вопрос, кажется, что вы пытаетесь реплицировать данные между двумя серверами баз данных. Возможно, вам стоит проверить, поддерживает ли механизм БД поддержку репликации.

+0

Работает ли он на SQL Server? –

+0

он делает, однако эта таблица не будет в репликации. Он находится на сервере разработки. – Eric

1

В зависимости от версии вы можете использовать SSIS (2005/2008) или DTS (2000/7), или если вам комфортно работать с командной строкой, то BCP или если вы администратор, и это одноразовый снимок И в зависимости от версии снова Enterprise Manager имеет интерфейсы запросов, которые, безусловно, позволят вам писать SQL (INSERT INTO ...) или SELECT * FROM ... но не зная версию или цель, ее трудно быть конкретным ..

1

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

0

Вы хотите переместить данные из одной таблицы в другую? Попробуйте BCP-утилита.

http://msdn.microsoft.com/en-us/library/aa174646(SQL.80).aspx 

Он отлично работает с огромным объемом данных.

1

Если таблица имеет первичный ключ

Declare @Start Integer Set @Start = 1 
Decalre @End Integer Set @End = 1000 
Declare @PKs table 
    (rowNo Integer identity Primary Key Not Null, 
     PK Integer Not Null) 
Insert @Pks(PK) 
Select PrimaryKeyColumn 
Form SourceTable 
Where [Criteria to select rows you want] 

While Exists(Select * From @PKs) 
    Begin 
     Begin Transaction 
     Insert DestTable([ColumnList]) 
     Select [ColumnList] 
     From SourceTable S 
     Join @Pks p 
      On p.PK = s.PrimaryKeyColumn 
     Where p.rowNo Between @Start and @End 
     Commit Transaction 
     -- ---------------------------------- 
     Delete @PKs where rowNo Between @Start and @End 
     Set @Start = @End + 1 
     Set @End = @Start + 999 
    End 
+0

oooooh .. Мне нравится! – Taptronic

0

Я задавал подобный вопрос и мастер импорта/экспорта предложил работал хорошо меня. Было очень быстро (несколько секунд) вставить тысячи записей из одной базы данных на одной машине в другую на другой машине.

Смежные вопросы