Быстрый дамп SQL Server Table - PullRequest
       1

Быстрый дамп SQL Server Table

1 голос
/ 15 марта 2012

У меня большая таблица в SQL Server 2008 R2. Он содержит миллиарды строк. Мне нужно загрузить весь набор данных в нашем приложении. Запрашивать всю таблицу очень медленно. Я хочу использовать BCP дамп в файл и загрузить его. Но проблема в том, что есть строковые столбцы, которые содержат всевозможные специальные символы, такие как \ t, \ 0, запятая и \ n Я не могу найти хороший терминатор поля / строки. Но терминатор длинных строк замедляет загрузку файла данных для моего приложения. Вопрос:

  1. Есть ли API, который загружает данные быстрее, чем SQL-запрос? Я считаю, что есть собственный API импорта IRowsetFastLoad. Но не повезло при экспорте.
  2. Существует ли какой-либо API для собственного формата BCP? Я не могу найти документ о формате нативного файла bcp.

Ответы [ 3 ]

1 голос
/ 15 марта 2012

С BOL :

-п

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

Миллиарды строк? Тогда вы также захотите использовать:

-b batch_size

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

Разве вы не можете получить доступ к двум базам данных одновременно, возможно, через Linked Server? Было бы проще.

DECLARE @StartId BIGINT
DECLARE @NmbrOfRecords BIGINT
DECLARE @RowCount BIGINT

SET @StartId = 0
SET @NmbrOfRecords = 9999
SET @RowCount = 1

WHILE @RowCount > 0
BEGIN
  BEGIN TRANSACTION

  INSERT INTO DestinationDatabase.dbo.Mytable
  SELECT * FROM SourceDatabase.dbo.Mytable
  WHERE ID BETWEEN @StartId AND @StartId + @NmbrOfRecords

  SET @RowCount = @@ROWCOUNT

  SET @StartId = @StartId + @NmbrOfRecords + 1

  COMMIT TRANSACTION
END
0 голосов
/ 06 марта 2014

Импорт и экспорт групповых данных с помощью утилиты bcp (SQL Server)

http://technet.microsoft.com/en-us/library/aa337544.aspx

Справочник по функциям массового копирования:

http://technet.microsoft.com/en-us/library/ms130922.aspx

0 голосов
/ 15 марта 2012

Массовая вставка API предоставляется программистам классом SqlBulkCopy:

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy.aspx

...