多行插入查询问题寻求更有效的方法

时间:2019-03-24 20:34:06

标签: sql sql-server sqlite insert

我已经创建了一个SQL Server数据库表,并且有很多数据条目要输入该表中。在这种特殊情况下,我有两列Technology Questionstime_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 个答案:

答案 0 :(得分:1)

(1)链接服务器方法

由于您正在从SQLite3中读取数据,因此可以从SQL Server创建链接服务器,并使用简单的insert语句导入数据:

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

其他信息


(2)SSIS方法

如果您熟悉SQL Server集成服务,这是一种将数据从数据源传输到另一个数据源的有效方法,则可以使用它通过ODBC将数据从SQLite传输到SQL Server。


(3)使用即席查询方法

我以前没有尝试过这种方法,我不知道它是否有效。

您可以通过ODBC连接到SQLite数据库,而无需添加链接服务器,您可以使用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')

其他信息