ティッカー シンボルを含む次の配列があります: Public Shared tickerArray() As String = {"GOOG", "AAPL", "V", "MSFT"}
. このループを使用する必要があります:For Each tickerValue In Form1.tickerArray
各ティッカー シンボルの csv ファイルを Microsoft Access の 1 つの大きなテーブルにロードします。csv ファイルは にあります"http://ichart.yahoo.com/table.csv?s=" & tickerValue
。また、各行を一意にするために、csv ファイルからインポートされたテーブルの各行にそれぞれのティッカー シンボルを読み込む必要があります。したがって、データベースの列は、「ティッカー、日付、始値、高値、安値、終値、出来高、および調整終値」である必要があります。
Access へのローカル csv ファイルの読み込みに関する情報を見つけましたが、vb.net を介してインターネットから Access に csv ファイルを読み込む方法がわかりません。
また、このテーブルを頻繁に更新する必要があるため、csv ファイルから新しい一意の行を挿入するだけで済みます。重複はありません。
助言がありますか?ありがとう!
更新: これが私がこれまでに持っているコードです。
Imports System.Data
Imports System.Data.OleDb
Imports System.Net
Imports System.IO
Public Class Form1
Public Shared tickerArray() As String = {"GOOG", "AAPL", "V", "MSFT"}
Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
Dim myConnection As OleDbConnection
Dim DBpath As String =
Dim sConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" & DBpath & ";Persist Security Info=True"
myConnection = New OleDbConnection(sConnectionString)
myConnection.Open()
Dim strURL As String
Dim strBuffer As String
For Each tickerValue In Form1.tickerArray
'Creates the request URL for Yahoo.
strURL = "http://ichart.yahoo.com/table.csv?s=" & tickerValue
strBuffer = RequestWebData(strURL)
'Create array.
Dim sReader As New StringReader(strBuffer)
Dim List As New List(Of String)
Do While sReader.Peek >= 0
List.Add(sReader.ReadLine)
Loop
Dim lines As String() = List.ToArray
sReader.Close()
For Each Line In lines.Skip(1)
MsgBox(Line)
Dim myInsert As String = TextToInsert(Line, tickerValue)
Dim cmd As New OleDbCommand(myInsert, myConnection)
cmd.ExecuteNonQuery()
Next
Next
End Sub
Function TextToInsert(ByVal inputString As String, ByVal ticker As String)
Dim Dt As String = inputString.Split(",")(0).Trim
Dim Open As String = inputString.Split(",")(1).Trim
Dim High As String = inputString.Split(",")(1).Trim
Dim Low As String = inputString.Split(",")(1).Trim
Dim Close As String = inputString.Split(",")(1).Trim
Dim Volume As String = inputString.Split(",")(1).Trim
Dim Adj_Close As String = inputString.Split(",")(1).Trim
Dim SQLstr As String
SQLstr = "INSERT INTO Historical (Ticker, Date, Open, High, Low, Close, Volume, Adj Close) " & "VALUES (" & "'" & ticker & "','" & Dt & "','" & Open & "','" & High & "'," & "'" & Low & "','" & Close & "','" & Volume & "','" & Adj_Close & "'" & ")"
Return SQLstr
End Function
Private Function RequestWebData(ByVal pstrURL As String) As String
Dim objWReq As WebRequest
Dim objWResp As WebResponse
Dim strBuffer As String
'Contact the website
objWReq = HttpWebRequest.Create(pstrURL)
objWResp = objWReq.GetResponse()
'Read the answer from the Web site and store it into a stream
Dim objSR As StreamReader
objSR = New StreamReader(objWResp.GetResponseStream)
strBuffer = objSR.ReadToEnd
objSR.Close()
objWResp.Close()
Return strBuffer
End Function
End Class
エラー コード "OleDBException was unhandled. Syntax error in INSERT INTO statement." が表示されます。ラインでcmd.ExecuteNonQuery()
助けてください!