Многострочный запрос вставки в поисках более эффективного способа - PullRequest
1 голос
/ 24 марта 2019

Я создал таблицу базы данных SQL Server, и у меня есть много записей для ввода в таблицу. В этом конкретном сценарии у меня есть два столбца, Technology Questions и time_entered.

Я пытался объединить существующие значения данных в один оператор INSERT INTO, однако мне не удалось найти способ его масштабирования, чтобы я не тратил весь день на копирование основных данных.

Этот запрос работает, однако обратите внимание, что он имеет только 4 элемента данных, по два на каждый столбец. Я хотел бы увеличить это, чтобы я мог вставлять сотни строк одновременно. Оператор вставки ниже, полученный из существующих данных ниже (из таблицы SQLITE3, и я пытаюсь вставить данные в базу данных SQL Server).

INSERT INTO questiontype([Technology Questions], time_entered)
VALUES ('Technology Question', '2018-10-29 13:31'),
       ('Technology Question', '2018-10-29 14:11')

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

Пример существующих данных (Есть сотни строк, как показано ниже)

Technology Question|2019-03-23 10:40
Technology Question|2019-03-23 10:40
Technology Question|2019-03-23 13:24
Technology Question|2019-03-23 13:55
Technology Question|2019-03-23 13:55
Technology Question|2019-03-23 16:23
Technology Question|2019-03-23 16:26
Technology Question|2019-03-23 16:59
Technology Question|2019-03-24 13:34
Technology Question|2019-03-24 15:11

Есть ли более эффективный способ случайно?

1 Ответ

1 голос
/ 24 марта 2019

(1) Подход со связанным сервером

Поскольку вы читаете данные из SQLite3, вы можете создать связанный сервер из SQL Server и использовать простой оператор вставки для импорта данных:

INSERT INTO questiontype([Technology Questions], time_entered)
SELECT [Technology Questions], time_entered
FROM openquery(sqlite_linked_server, 'select * from sqlitetable')

Дополнительная информация


(2)Подход SSIS

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


(3) Использование метода специальных запросов

У меня естьраньше не пробовал этот подход, я не знаю, эффективен он или нет.

Вы можете подключиться к базе данных SQLite через ODBC, не добавляя связанный сервер, вы можете сделать это с помощьюСпециальный запрос с использованием OPENROWSET

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;

INSERT INTO questiontype([Technology Questions], time_entered)
SELECT [Technology Questions], time_entered
FROM OPENROWSET('MSDASQL', 'DSN=<odbc DSN>', 
  'SELECT * FROM sqliteTable')

Дополнительная информация

...