Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 多行插入查询问题寻找更有效的方法_Sql_Sql Server_Sqlite_Ssis_Insert - Fatal编程技术网

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

Sql 多行插入查询问题寻找更有效的方法,sql,sql-server,sqlite,ssis,insert,Sql,Sql Server,Sqlite,Ssis,Insert,我已经创建了一个SQL Server数据库表,并且有许多数据项要输入到该表中。在这个特定场景中,我有两列,技术问题和输入的时间 我曾尝试将现有数据值合并到一个INSERT-into语句中,但是我没有找到一种方法来扩展它,因此我没有花一整天的时间复制基本数据 但是,请注意,该查询只有4个数据元素,每列两个。我想放大这个,这样我可以一次插入数百行。下面的insert语句源自下面的现有数据(来自SQLITE3表,我正在尝试将数据插入SQL Server数据库) 上面的例子效果很好,但我不知道扩大规模的

我已经创建了一个SQL Server数据库表,并且有许多数据项要输入到该表中。在这个特定场景中,我有两列,
技术问题
输入的时间

我曾尝试将现有数据值合并到一个
INSERT-into
语句中,但是我没有找到一种方法来扩展它,因此我没有花一整天的时间复制基本数据

但是,请注意,该查询只有4个数据元素,每列两个。我想放大这个,这样我可以一次插入数百行。下面的insert语句源自下面的现有数据(来自SQLITE3表,我正在尝试将数据插入SQL Server数据库)

上面的例子效果很好,但我不知道扩大规模的最佳方法

现有数据示例(有数百行,如下所示)

有没有更有效的方法?

(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 integration Services,它是将数据从一个数据源传输到另一个数据源的有效方法,您可以使用它通过ODBC将数据从SQLite传输到SQL Server


(3) 使用ad-hoc查询方法 我以前从未尝试过这种方法,我不知道它是否有效

您可以通过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')
EXEC sp_配置“显示高级选项”,1;
重新配置;
EXEC sp_配置“临时分布式查询”,1;
重新配置;
插入问题类型([技术问题],输入时间)
选择[技术问题],输入时间
从OPENROWSET('MSDASQL','DSN=',
“从sqliteTable中选择*”)
其他信息


查看使用
选择而不是
值插入的示例
INSERT INTO questiontype([Technology Questions], time_entered)
SELECT [Technology Questions], time_entered
FROM openquery(sqlite_linked_server, 'select * from sqlitetable')
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')