简体   繁体   English

从 Excel 文件生成 SQL 脚本(带有多个工作表)

[英]Generating SQL script from an Excel File (with multiple sheets)

How can we generate SQL scripts (Delete and Update) based on a column, say A , value in Excel sheet .我们如何根据Excel sheetsay A列值生成 SQL 脚本(Delete and Update)

Logic runs like this:逻辑运行如下:

  1. If value in A column is Yes, generate a Delete SQL statement for every row which as value in Column A as Yes, otherwise generate a Update SQL statement.如果 A 列中的值为 Yes,则为 A 列中的值为 Yes 的每一行生成一条 Delete SQL 语句,否则生成一条 Update SQL 语句。

  2. Generated SQL script should be automatically saved in a text file/notepad.生成的 SQL 脚本应自动保存在文本文件/记事本中。

  1. ask google how to use vba问google vba怎么用
  2. ask google to find out how to read append and delete text files:)请谷歌了解如何阅读 append 并删除文本文件:)
  3. ask google for SQL tutorials向谷歌索要 SQL 教程
  4. as google how to execute sql files for your server作为谷歌如何为您的服务器执行 sql 文件

To give you a kick start - this works in principle like this:为了让您开始 - 这原则上是这样的:

Function filewrite(ByRef FILE, ByRef TEXT As String) As long
  ERR.CLEAR
  On Error Resume Next
  Dim FF As Long
  FF = FreeFile()
  On Error Resume Next
  Open FILE For Output As #FF
  Print #FF, TEXT
  Close #FF
  filewrite = ERR.NUMBER
  On Error GoTo 0
  ERR.CLEAR
End Function

sub create_delete_statements(tablename)
   dim SQL as  string
   Dim WS As Excel.Worksheet
   Dim WB As Excel.Workbook

open xyz.xls if needed如果需要,打开 xyz.xls

   Set WB = AP.Workbooks.Open("Unknown.xls") 

chooses a workbook from "Unknown.xls" this will work also same way if you want to use "Sheet2" eg Set WS = WB.Worksheets("Sheet2")从“Unknown.xls”中选择一个工作簿,如果您想使用“Sheet2”,这也将以相同的方式工作,例如 Set WS = WB.Worksheets("Sheet2")

   Set WS = WB.Worksheets("Sheet1") 

   for i=0 to 10
        if ws.Cell(i,1).value=-1 then ''use "Sheet1"
             databaseid=ws.Cell(i,2).value  
             SQL=SQL & "DELETE FROM TABLE " & tablename & "where id =" & databaseid & ";" & vblf
        endif
   next 
   dim FN as string
   on error resume next
   err.clear
   fn="commands.sql" 

kill /delete the old sql file if it exists杀死/删除旧的 sql 文件(如果存在)

   if dir(fn)<>"" kill(fn)

pump your statements out抽出你的陈述

   fresult= filewrite(fn,SQL) 
   if err.number + fresult <> 0 msgbox "Something went wrong on file out"
end sub

Have fun:)玩得开心:)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM