我已经创建了一个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)链接服务器方式
由于您正在从SQLite3读取数据,因此可以从SQL Server创建链接服务器,并使用简单的insert语句导入数据:
INSERT INTO questiontype([Technology Questions], time_entered)
SELECT [Technology Questions], time_entered
FROM openquery(sqlite_linked_server, 'select * from sqlitetable')
附加信息
Creating a SQL Server Linked Server to SQLite to Import Data
(2)SSIS方式
如果您熟悉SQL Server集成服务,这是一种将数据从数据源传输到另一个数据源的有效方法,则可以使用它通过ODBC将数据从SQLite传输到SQL Server。
CONNECTING TO SQLITE THROUGH SSIS
(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')
附加信息
Import data from SQLite to Microsoft SQL Server
关于sql - 多行插入查询问题寻找更有效的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55328303/