我有一个约1000行和约15列的Excel电子表格。我想要做的是将这些数据导入到表格中,但有选择地导入。我想从第5行(比如说)开始,直到从表格末尾开始的大约5行。这是因为行数可能会有所不同,但我确信无论电子表格中的行数是多少,我都不需要最后的4-5行。另外,我想只插入几列,如Col1-Col5,Col7-Col9和Col12-Col15。是否有一个命令可以用来实现这一目标?请尽快通知我。非常感谢!如何将XLS的特定列插入到MS SQL Server表中?
0
A
回答
0
下面的代码根据xls中的内容创建一个包含SQL指令的文件。你只需要添加一个宏,粘贴它,并改变一些东西(添加一段时间来填充ColFields集合的标题行,其中列名必须与表字段名匹配,声明什么不是,给fileName一个值。 ..)。 然后执行宏,你将得到一个包含你想要的所有插入的文件,然后你只需要在你的基础上执行这个文件。
Sub Macro1()
Dim NbOfLines = Worksheets(Sheet1).Range("A65536").End(xlUp).Row - 5 'Not the 5 last lines
Dim ColFields As New Collection 'Do a while on the title line to fill the collection with wanted columns titles (do not add ignored columns)
Dim StartSql As String
StartSql = "INSERT INTO " + TableName + "("
For Each loopField In ColFields
StartSql = StartSql + loopField + ","
Next
StartSql = Left(StartSql, Len(StartSql) - 1)
StartSql = StartSql + ") SELECT "
Dim Value As String
For i = 1 To NbOfLines
Sql = ""
j = 1
For Each loopField In ColFields
Value = Worksheets(SheetName).Cells(i, j).Value
Sql = Sql + IIf(Value = "", "NULL", "'" + Replace(Value, "'", "''") + "'") + ","
j = j + 1
Next
Sql = Left(Sql, Len(Sql) - 1)
Sql = StartSql + Sql + vbCrLf
Call WriteLine(Sql, FileName)
Next
End Sub
Public Sub WriteLine(Ligne As String, FileName As String)
Open FileName For Append As #1
Print #1, Ligne
Close
End Sub
编辑:我知道这是不是最好的方法(也不是最漂亮的一个),我给你的COS'我用它在几个星期前就从数据库导入数据到另一个(但我需要只做一次,而不是每天)。 我也知道有一种方法可以用OpenRowSet来做到这一点,但我只是不知道如何(我会经常在这个页面上希望有人会教我)。 最后,我建议您阅读本页:A Blog Page With A Solution (您会在这里找到伟大的程序'uftReadfileAsTable':The Procedure Code) 祝您好运!
相关问题
- 1. 如何在MS sql server中插入md5散列值?
- 2. 从MS Access插入到带有GUID pk的SQL Server表中
- 3. 将对象列表插入到SQL Server表中
- 4. 如何将XML数据插入到表中的SQL Server 2005
- 5. 如何将XML数据中的标识ID列插入到SQL Server表中?
- 6. 如何将字节[]插入到SQL Server VARBINARY列中
- 7. 插入特定列表时触发SQL SERVER
- 8. 如何将记录插入到sql server express数据库表中?
- 9. 如何将Deedle数据框插入到SQL Server表中
- 10. 如何防止将重复数据插入到SQL Server表中?
- 11. 如何将随机值插入到SQL Server表中?
- 12. 插入XML到SQL Server表
- 13. 在MS SQL Server 2005中插入IGNORE?
- 14. 批量插入SQL Server中的特定列
- 15. 如何使用vb.net将MS Access数据导入到SQL Server中
- 16. 如何将插入行添加到数据绑定到SQL Server表的GridView?
- 17. 在MS SQL Server 2008中插入特殊字符
- 18. 如何在coldfusion中将密码作为散列插入Ms SQL?
- 19. 如何在SQL Server中将多列组合/插入一列
- 20. 如何在MS SQL Server中插入子查询的内容?
- 21. 将表从MS SQL Server迁移到MySQL
- 22. 将变量插入到SQL Server中
- 23. 将HTML数据插入到SQL Server中
- 24. 将选定的列从一个表插入到SQL Server中另一个表的选定列
- 25. 如何将图像插入到SQL Server数据库表
- 26. 如何在SQL Server Management Studio的表中隐藏特定的列?
- 27. MS Access锁定SQL Server中的表?
- 28. 如何从xls插入数据到MySQL
- 29. 如何使用Sql Server 2008将节点插入到sql xml列中?
- 30. 插入到SQL Server
感谢您的回复! :)有没有比这更简单的方法?有没有办法使用openrowset来做同样的事情?而且,如果我要使用这个文件,我该把它放在哪里?另外,文件名称每天都会有所不同。如何说明其“动态”性质?此外,看看这段代码,我是否正确地假设表中的列名和文件中的列名是相同的,即由于我将运行的while循环?请尽可能让我知道。 – CodingInCircles 2011-03-08 13:02:56
我想我真正想知道的是如果有一个SQL命令来做到这一点。为了简单起见。谢谢! – CodingInCircles 2011-03-08 13:15:25
非常感谢您的回复!将查看链接。谢谢! – CodingInCircles 2011-03-09 06:00:57