ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] excel vba (´¡¤J¸ê®Æ)insert ¶i sqlite ½wºC°ÝÃD

[µo°Ý] excel vba (´¡¤J¸ê®Æ)insert ¶i sqlite ½wºC°ÝÃD

¥»©«³Ì«á¥Ñ joey0415 ©ó 2013-8-6 22:21 ½s¿è

¤§«e´¿¸g½m²ßinsert§â¸ê®Æ±qsheet1¤¤¡A©ñ¶isqlite¸ê®Æªí¤¤¡A
«á¨Ó¦bsheet1¤¤¥[¤J¦h¦æ¸ê®Æ¡A¤]·Q±N¼Æ¤Q±qªº¸ê®Æ³z¹Lfor ¦^°é©ñ¶i¸ê®Æ¸ê®Æªí¤¤
ÁöµM«ö¤U¥h¤]¥i¥H°õ¦æ¡A¦ý¬O³t«×ºC¨ìµLªk·Q¹³¡A¤~500µ§ªº¸ê®Æ´N­n¼Æ¤Q¬í¤§¦h
joey.zip (440 Bytes)
§Úªºªí(home)
20130806-174.gif
2013-8-6 22:19


¤Wºô¬d¹L¸ê®Æ¡Aµo²{sqlite­Y­n¤j¶qinsert®É¡A¥i¥H³z¹Lbegin »Pcommitªº¤èªk¡A¥ý¥´¶}(begin)¡A¦A¤@°_sql»yªk¡A³Ì«á¤@¦¸¼g¤J(commit)
¤U­±¬O¤p§Ìºô¸ô¤W¬d¨ìªºvba»yªk¡A¬Ý¼Ë¤l¬O¹ïªº¡A¤£¹LÁÙ¬O·|³ø¿ù¡A³Ì«á¤@­Ó¬O¤p§Ì¥i¥H¦¨¥\¡A¦ý¬O³t«×ºCªº¤èªk¡A¤£ª¾¹D¥i¥HÀ°¦£­×§ï¦¨§Öªº¤èªk¶Ü¡H


20130806-172.gif
2013-8-6 22:13



ÁÂÁÂ

ºô¸ô¤Wªº»yªk(¦³begin    commit)
http://www.mrexcel.com/forum/excel-questions/435486-sqlite-excel-visual-basic-applications-4.html
  1. sub Batch_Insert_Statement
  2. For i = 1 To 100000
  3. xsql = xsql & "Insert into tablename (ProductCode, UnitsSold, DateSold) values '" & Trim(MyRecordset!ProductCode) & "', '" & MyRecordset!UnitsSold &"', '" &
  4. Format(MyRecordset!DateSold, "YYYY-MM-DD HH:MM:SS") & "'; "
  5. Next i
  6. do_sql (xsql)
  7. end sub

  8. ' Insert records inside a SQLite transaction - Open DB - begin - batch - Commit
  9. Sub do_sql(xsql As String)
  10. Set filecnn = New_c.Connection("C:\PathToYour\Database.sql")
  11. filecnn.Execute "Begin"
  12. filecnn.Execute xsql
  13. filecnn.Execute "Commit"
  14. Set filecnn = Nothing
  15. End Sub
½Æ»s¥N½X
§Úªº°µªk¡A¦ý³t«×ºC
  1. [b]Sub vba_sqlite_inser§å¦¸¦¨¥\[/b]()

  2.     Dim x, rcnt, i
  3.     Dim sql_command As String
  4.     Dim connection_string As String
  5.    
  6.     Worksheets(1).Activate
  7.     rcnt = Range("a1").CurrentRegion.Rows.Count
  8.     i = 1
  9.     For i = 1 To rcnt  
  10.         Set x = CreateObject("adodb.recordset")
  11. '        sql_command = "insert into home(name, age) values('mary','50') "
  12.         aa = "insert into home(name, age) values('" & Cells(i, 1) & "','" & Cells(i, 2) & "' & "')"
  13.    
  14.         sql_command = aa
  15.         connection_string = ("Driver={SQLite3 ODBC Driver};database=D:\joey.sqlite")
  16.         x.Open sql_command, connection_string
  17.         Set x = Nothing
  18.     Next
  19. End Sub
½Æ»s¥N½X
20130806-173.gif

¦^´_ 2# luhpro
¦³§r¡I¤£¹L¨º¤£¬O°ÝÃD

¬Osqlite­n´¡¤J¸ê®Æ®É¡A·íµM­nopen»Pclose

¨C´¡¤J¤@µ§´N­n¶}Ãö¤@¦¸¡A¤p§Ì»¡ªº¬O¥¦¦³¤@ºØ¼gªk¬O

¤@°_¥´¶}(begin)

sql (insert XXXXXXX value( XXX,XXX,XXX)
sql (insert XXXXXXX value( XXX,XXX,XXX)
sql (insert XXXXXXX value( XXX,XXX,XXX)
sql (insert XXXXXXX value( XXX,XXX,XXX)

¤@°_´£¥æ(commit)

ªº¤è¦¡¡A¨ººØ¼gªk¦bvba¤¤¡A§Ú¤£·|¼g¡A©Ò¥H·Q½Ð±Ð¤@¤U°ª¤â«üÂI

ÁÂÁ¦^µª

TOP

§ä¨ì¸Ñ¨Mªº¤èªk¤@¡A«D¥¿¦¡¡K

sql»y¥y¨Ò¦p
INSERT INTO "ªí®æ¦W" ("Äæ¦ì1", "Äæ¦ì2", ...)VALUES ("­È1", "­È2", ...);
sqlite¥¦¤¹³\
INSERT INTO "ªí®æ¦W" ("Äæ¦ì1", "Äæ¦ì2", ...)VALUES ("­È1", "­È2", ...),("­È3", "­È4", ...),("­È5", "­È6", ...);
ªº¤èªk¡A¤@¦¸³Ì¦h¿é¤J500²Õ¼Æ­È¡A¶W¹L«á¤@¼Ë·|³ø¿ù

¦pªG§A¦³1534²Õ­ninsert¶i¸ê®Æ®w¤¤¡A¥i¥H¤À¦¨¥|²Õ 34  500 500 500 ªº¤èªk¤À§å¥[¶i¸ê®Æ®w¤¤
¦pªG¬O¤@²Õ²Õ¿é¤J¡A¤W¨Ò¤j·§­n30¬í¥H¤W
¦pªG¬O¤À¥|²Õ¿é¤J¡A¦ô¤£¥Î2¬í

¥H¤U¬O­Ó¤Hµ{¦¡½X¡G¶È¨Ñ°Ñ¦Ò
  1. Sub sqlite§å¦¸insert¦hµ§¦¨¥\()
  2. '³Ì¦h¤@¦¸500±ø¡A­n¤À¬q©ñ¶i¥h

  3.     Dim x, rcnt, i
  4.     Dim sql_command As String
  5.     Dim connection_string As String
  6.    
  7.     Worksheets(1).Activate
  8.     rcnt = Range("a1").CurrentRegion.Rows.Count
  9.     ­¿¼Æ = (rcnt \ 500)
  10.     zx = rcnt Mod 500 '§ä500¾l¼Æ

  11.      
  12.      j = 0

  13.         If rcnt < 500 Then  '¦pªG¤p©ó500®É¥u­pºâ¤U­±¸ê®Æ
  14.         
  15.                         aa = "insert into dbs(yyyymmdd, stockname, tradercode, price, buyamount, sellamount) values"
  16.                         Set x = CreateObject("adodb.recordset")
  17.                         cc = ""
  18.                         cc = aa
  19.                         i = 1

  20.                             For i = 1 To rcnt
  21.                                 bb = "('" & Cells(i, 1) & "','" & Cells(i, 2) & "','" & Cells(i, 3) & "','" & Cells(i, 4) & "','" & Cells(i, 5) & "','" & Cells(i, 6) & "')"
  22.                                 '¦ê±µ­ninsertªº¼Æ­È¹ï
  23.                                 cc = cc & bb & ","
  24.                             Next
  25.         
  26.                         cc = Left(cc, Len(cc) - 1)  '¨ú¦r¦ê¨Ã§R°£³Ì«á¤@­Ó","
  27.                         sql_command = cc
  28.                         connection_string = ("Driver={SQLite3 ODBC Driver};database=D:\ªÑ²¼¸ê®Æ¤U¸ü\dbs.sqlite")
  29.                         x.Open sql_command, connection_string
  30.                         Set x = Nothing

  31.         Else '¦pªG¤j©ó500®É¡A­nºâ¤U­±¨âºØ¸ê®Æ
  32.         
  33.                         aa = "insert into dbs(yyyymmdd, stockname, tradercode, price, buyamount, sellamount) values"
  34.                         Set x = CreateObject("adodb.recordset")
  35.                         cc = ""
  36.                         cc = aa
  37.                         i = 1
  38.                             For i = 1 To zx
  39.         
  40.                                 bb = "('" & Cells(i, 1) & "','" & Cells(i, 2) & "','" & Cells(i, 3) & "','" & Cells(i, 4) & "','" & Cells(i, 5) & "','" & Cells(i, 6) & "')"
  41.                                 cc = cc & bb & ","
  42.                             Next
  43.                         cc = Left(cc, Len(cc) - 1)
  44.                         sql_command = cc
  45.                         connection_string = ("Driver={SQLite3 ODBC Driver};database=D:\ªÑ²¼¸ê®Æ¤U¸ü\dbs.sqlite")
  46.                         x.Open sql_command, connection_string
  47.                         Set x = Nothing

  48.                         For j = 0 To ­¿¼Æ - 1
  49.         
  50.                         aa = "insert into dbs(yyyymmdd, stockname, tradercode, price, buyamount, sellamount) values"
  51.                         Set x = CreateObject("adodb.recordset")
  52.                         cc = ""
  53.                         cc = aa
  54.                         i = 1
  55.         
  56.                             For i = j * 500 + zx + 1 To (j + 1) * 500 + zx
  57.         
  58.                                 bb = "('" & Cells(i + j * 500, 1) & "','" & Cells(i + j * 500, 2) & "','" & Cells(i + j * 500, 3) & "','" & Cells(i + j * 500, 4) & "','" & Cells(i + j * 500, 5) & "','" & Cells(i + j * 500, 6) & "')"
  59.                                 cc = cc & bb & ","
  60.         
  61.                             Next
  62.         
  63.                         cc = Left(cc, Len(cc) - 1)
  64.                         sql_command = cc
  65.                         connection_string = ("Driver={SQLite3 ODBC Driver};database=D:\ªÑ²¼¸ê®Æ¤U¸ü\dbs.sqlite")
  66.                         x.Open sql_command, connection_string
  67.                         Set x = Nothing
  68.                     Next
  69.         
  70.         End If

  71. End Sub
½Æ»s¥N½X

TOP

¦pªG¤j¤jÁÙ¦³§ó¦nªº¤èªk¡A½Ð¦^¤åÅý¤p§Ì¦h¾Ç²ß¡A³o¸ê®Æ¥i¬Oªá¤F«Ü¤[ªº®É¶¡¤~¬ð¯}ªº

TOP

        ÀR«ä¦Û¦b : µêªÅ¦³ºÉ¡D§ÚÄ@µL½a¡AµoÄ@®e©ö¦æÄ@Ãø¡C
ªð¦^¦Cªí ¤W¤@¥DÃD