将Excel中的1000多行插入SQLServer

将Excel中的1000多行插入SQLServer,sql,sql-server,sql-server-2008,insert,Sql,Sql Server,Sql Server 2008,Insert,我是Sql新手,但将excel文档中1000多行插入数据库(Sql server 2008)的最佳方法是什么 例如,我使用以下查询: INSERT INTO mytable(companyid, category, sub, catalogueref) VALUES ('10197', 'cat', 'sub', '123'), ('10197', 'cat2', 'sub2', '124') 这很好,但插入1000条记录是有限制的,我有19000条记录,我真的不想做1

我是Sql新手,但将excel文档中1000多行插入数据库(Sql server 2008)的最佳方法是什么

例如,我使用以下查询:

   INSERT INTO mytable(companyid, category, sub, catalogueref)
   VALUES
   ('10197', 'cat', 'sub', '123'),
   ('10197', 'cat2', 'sub2', '124')

这很好,但插入1000条记录是有限制的,我有19000条记录,我真的不想做19条单独的insert语句,还有一个问题,公司id总是一样的,有没有比写19000次更好的方法?

Microsoft提供了一个SQL Server。我用它从其他数据库和电子表格中迁移数据。它非常健壮且易于使用。

您应该能够使用多个事务插入-

BEGIN TRANSACTION
 Insert into mytable(companyid,category,sub,catalogueref)
   values
   ('10197','cat', sub','123'),
   ('10197','cat2', sub2','124')
   ...998 more rows...
COMMIT TRANSACTION
go
BEGIN TRANSACTION
 Insert into mytable(companyid,category,sub,catalogueref)
   values
   ('10197','cat', sub','123'),
   ('10197','cat2', sub2','124')
   ...998 more rows...
COMMIT TRANSACTION

有几个选项,Erik建议的导入向导,或者SSIS是另一个不错的选项

请看这里:

只需在Excel或其他程序中编辑数据,创建N个insert语句,每个语句只需一次insert,就可以无限次插入。例如

INSERT INTO table1 VALUES   (6696480,'McMurdo Station',-77.846,166.676,'Antarctica','McMurdo')
INSERT INTO table1  VALUES  (3833367,'Ushuaia',-54.8,-68.3,'America','Argentina')
...19,000 later
INSERT INTO table1 VALUES   (3838854,'Rio Grande',-53.78769,-67.70946,'America','Argentina')

你从哪里得到数据?另一张桌子?档案?你的头像?阅读有关Hi Jiggs的内容,我在一张excel单独的表格中找到了使用INSERT-INTO的解决方法。。。选择。。。所有这些都是一个很好的解决方案。但我想知道的是你的原始数据是什么方向的?是Excel吗?通道您可以只导出csv文件(如果是)并使用它。如果以其他方式配置数据,则可能会有其他解决方案。询问者将数据保存在Excel电子表格中,因此也可以将数据导出到CSV,然后使用另一种工具,如
bcp
。当导入问题开始出现时,导入向导的用户界面非常方便。是的,我在导入向导上的钱谢谢Erik,这个界面真的很容易使用!事实证明,这比将
INSERT
语句拆分为1000个值元组要快得多。感谢您提醒我注意这一点。为了改进答案,请解释一下这一方法有效的原因。请点击链接:
INSERT INTO mytable(companyid, category, sub, catalogueref)
SELECT companyid, category, sub, catalogueref from (VALUES
('10197', 'cat', 'sub', '123'),
('10197', 'cat2', 'sub2', '124')
//more 1000 rows...
as sub (companyid, category, sub, catalogueref)