我正在尝试使用VBA将数据表从excel导入SQL Server 2012。 最好在UDF的帮助下。
excel表看起来像这样。
TableID 2012 2011 2010 2009
row 1 11 12 13 14
row 2 21 22 23 24
row 3 31 32 33 34
etc..
(我将数字放在单元格中以指定其位置。例如11 =第1行,第1列)
数据库表看起来像这样。
Header: id | year | row1 | row2 | row3 | etc..
ExampData: TableId 2012 11 21 31 ..
ExampData: TableId 2011 12 22 32 ..
(这不包括“主键”列,该列可以是id和year的组合,也可以是a NEWID()
)
我知道如何导入特定的列,例如,我可以运行以下代码:
INSERT INTO example_table (id, year, row1, row2, row3) VALUES ('001', '2012', '11', '21', '31')
这对于单个列非常有用,但是我将如何使其适用于整个表(多个列和行)。
因此,我设法使其正常运行。这使用的是Excel 2010,SQL Sever2012。
这假定excel中的行标题与sql中的列标题相同。
这也假设表格的布局与问题类似。
要将数据从Excel导入到SQL Server(使用UDF),我们可以执行以下操作。在Excel中
创建一个Public Function
:
Public Function import_data(TableID, vHeader As Variant, vRow As Variant, vData As Variant)
End Function
并使用您喜欢的连接方法连接到数据库。
然后对于该INSERT
语句使用以下命令:
'Declare the variables
Dim vpush As String
Dim headerCount As Long
Dim rowTitles As String
Dim rowDatas As String
Dim i As Long
`Count the amount of columns
headerCount = Application.CountA(vHeader)
`Create insert statement
For i = 1 To headerCount
rowTitles = VBA.Join(WorksheetFunction.Transpose(vRow), ", ")
rowDatas = VBA.Join(WorksheetFunction.Transpose(Application.Index(vData, , i)), "', '")
vpush = "INSERT INTO example_table (id, " & rowTitles & ", year) VALUES ('" & TableID & "', '" & rowDatas & "', '" & vHeader(i) & "')"
Next i
别忘了.Execute (vpush)
。
比起您要导入表的任何时间,您都将在excel工作表中执行以下操作:
=import_data(
,然后按CTRL
+ SHIFT
+A
那应该做。
(PS:如果这不是最有效的方法,或者您看到了改进。。请随时进行编辑或添加)
问题内容: 我有一个xlsx格式的下表,我想将其导入到我的sql数据库中: 该表非常复杂,我只需要‘1)HEADING’之后的记录 我一直在寻找要导入sql的php库,但它们似乎仅用于简单的excel文件。 问题答案: 您有两种方法可以实现: 第一种方法: 1)将其导出为某种文本格式。最简单的可能是制表符分隔的版本,但是CSV也可以使用。 2)使用负载数据功能。参见http://dev.mysql
问题内容: 我有一个电子表格,实际上只有一个复杂的表格。我基本上将电子表格转换为cvs,并使用常规脚本生成INSERT脚本。 但是,我无法使用包含28个字段的表来执行此操作,该表包含电子表格中某些字段中的数据,这使得导入CVS更加复杂。因此,新CVS中的字段无法正确区分,或者我的脚本没有对此进行说明。 有人对更好的方法有任何建议吗?谢谢。 问题答案: 看一下LOAD DATA INFILE语句。这
我有一个VBA脚本,可以计算Outlook中选定文件夹中的未读电子邮件。目前,帐户和文件夹名是硬编码到脚本中的,但我想让它可以从excel表单中配置。 当前该变量设置在以下位置: 理想情况下,我希望有一个名为Config的工作表,其数据如下: 有没有人能提供一些关于如何做到这一点的线索?
问题内容: 我想在数据库中建立表格以在Excel工作表中获取大量联系信息,以便我可以在数据库中进行维护。 我尝试遵循从SQL Server 2008 R2导入导入/导出平面文件的操作,但此操作不起作用。谁能告诉我如何将电子表格成功导入数据库中的表中? 谢谢 问题答案: 有一个Microsoft知识库文章,列出了所有可能的方法。 http://support.microsoft.com/kb/321
我正试图将数据从Excel导入到SQL Server表中,但遇到了这个错误。你能建议如何避免这些吗?
我正在尝试将工作表中的一个范围作为图像嵌入outlook邮件正文中。它正在正确保存图片,但我只在outlook邮件正文中看到空白图像。我做错了什么?