sql - 通过 VBA 将 Excel 范围推送到 SQL 表
问题描述
每次关联执行 VBA 宏时,我都需要将 Excel 中的范围推送到 SQL 表中的新行。到目前为止,我已经在 Excel 中将数据分成单行和多列(总共 110 个数据单元格)。我现在的问题源于如何将 Excel 工作表中的每个单元格插入相应的列和 SQL 表中的第一个空行。我已经对互联网进行了一些相当广泛的搜索,但没有发现任何与我想要做的事情相近的东西。
是否有正确的程序允许我将 110 列的行转储到 SQL 表中的第一个空行中?
我已经写好了表格,并且设置了范围:
Set DataBaseData = ActiveSheet.Range("DO1:HT1")
除此之外,我不知道以哪种方式打开与服务器、数据库和表的连接。这是我到目前为止所飞翔的:
Sub Connection()
Dim Conn As ADODB.Connection
Dim Command As ADODB.Command
Set Conn = New ADODB.Connection
Set Command = New ADODB.Command
Dim i As Integer
Dim columnnumber As Integer
i = 0
Conn.ConnectionString = "Provider=SQLOLEDB; Data Source=[Nope];Initial Catalog=[NopeNope];User ID=[NopeNopeNope];Password=[AbsolutelyNot]; Trusted_Connection=no;"
Conn.Open
Command.ActiveConnection = Conn
End Sub
任何帮助将不胜感激。
如果您对我正在尝试做的事情感到好奇:我正在将一系列数据从 CMM 推送到数据库,这样我就可以将数据存储所需的时间,并将该数据调用回 PowerBI 并Minitab。
解决方案
我能够使用以下方法成功地将整行从 Excel 写入 SQL 数据库:
Sub Connection()
Const Tbl As String = "NEIN"
Dim InsertQuery As String, xlRow As Long, xlCol As Integer
Dim DBconnection As Object
Set DBconnection = CreateObject("ADODB.Connection")
DBconnection.Open "Provider=SQLOLEDB.1;Password=NEIN" & _
";Persist Security Info=false;User ID=NEIN" & _
";Initial Catalog=NEIN;Data Source=NEIN"
InsertQuery = ""
xlRow = 1 'only one row being used *as of now*, and that is the top row in the excel sheet
xlCol = 119 'First column of data
While Cells(xlRow, xlCol) <> ""
InsertQuery = InsertQuery & "INSERT INTO " & Tbl & " VALUES('"
For xlCol = 119 To 229 'columns DO1 to HT1
InsertQuery = InsertQuery & Replace(Cells(xlRow, xlCol), "'", "''") & "', '" 'Includes mitigation for apostrophes in the data
Next xlCol
InsertQuery = InsertQuery & Format(Now(), "M/D/YYYY") & "')" & vbCrLf 'The last column is a date stamp, either way, don't forget to close that parenthesis
Wend
DBconnection.Execute InsertQuery
DBconnection.Close
Set DBconnection = Nothing
End Sub
推荐阅读
- java - 如何使用 Java 在单独的行上打印整数位
- java - 为什么这个程序在 IntelliJ Debug 模式下会抛出 NoSuchElementException?
- javascript - 在 Remix 中部署合约并获取错误:回调已被调用
- android-sdk-tools - 如何从 OSMDroid 类文件中诊断 dx 错误“invokedynamic requires --min-sdk-version >= 26”?
- java - 如何从 android Studio 解决这个 java 路径错误?
- regex - 捕捉旧的 url 正则表达式
- php - 我无法将数据库中的信息链接到我的 php 文档中
- html - 响应式网页设计 - 如何在不调整标签对齐方式的情况下放大整个页面
- java - 如何在java 8中获取其他json元素的值
- javascript - 消除对象数组中的重复项