sql - 多行插入查询问题寻找更有效的方法

标签 sql sql-server sqlite ssis 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)链接服务器方式

由于您正在从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/

相关文章:

sql - 选择不同的组合

mysql - 如何在 mySQL 中使用基于代码的指令?

c# - 在 C# 中根据用户输入条件编写动态 sql 查询

iOS - 在更新到新版本时保留旧的 sqlite 数据库

java - 带有 Ormlite 和 JavaFX 的嵌入式 Sqlite 数据库 : error creating table

sql - 运行插入 SQL 查询

sql - 使用include列和不使用include列创建索引的区别

c# - 在SQL中从一行中选择多行

android - 如何从 Sqlite 数据库中检索 DATETIME 格式

mysql - 如何使用MySQL将最小值行的值更新为最大值行的值?