【问题标题】:Multiple Line Insert Query Issue Looking for More Efficient Way多行插入查询问题寻找更有效的方法
【发布时间】:2019-08-15 03:12:33
【问题描述】:

我创建了一个 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

有没有更有效的方法?

【问题讨论】:

标签: sql sql-server sqlite ssis insert


【解决方案1】:

(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 集成服务,这是一种将数据从一个数据源传输到另一个数据源的有效方式,您可以使用它通过 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')

其他信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多