我有一个名为*your path*\Test\Test.accdb
的MS Access数据库
它包含一个名为Table1
我有两个.csv
文件:
“您的路径\ Test \ Test_Data_20190111.csv”
“您的路径\ Test \ Test_Data_20190114.csv”
,日期数据以美国格式存储,如下所示:
Date(MM/DD/YYYY),TestField
1/11/2019,C
1/11/2019,D
和
Date(MM/DD/YYYY),TestField
1/14/2019,A
1/14/2019,B
我使用下面的VBA代码(使用ADODB.Recordset)从.csv文件中上传数据,
Sub Upload_CSV_to_MSDB()
Dim xlcon As ADODB.Connection
Dim xlrs As ADODB.Recordset
Dim strSQL As String
Dim strFile_Path_Name As String
Dim cnStr As String
' Set ADO object variable
Set xlcon = New ADODB.Connection
Set xlrs = New ADODB.Recordset
' Set string variables
strFile_Path_Name = "your path \Test\"
strSQL = "INSERT INTO Table1 IN ' your path \Test\Test.accdb' " & _
"SELECT [Date(MM/DD/YYYY)], [TestField] " & _
"FROM Test_Data_20190111.csv"
' Set connection string to CSV file
cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & strFile_Path_Name & ";" & _
"Extended Properties=""text;HDR=Yes;FMT=Delimited;"""
' Execute strSQl by opening record set
xlrs.Open strSQL, cnStr, adOpenStatic, adLockOptimistic
Set xlrs = Nothing
Set xlcon = Nothing
End Sub
当我上传文件Test_Data_20190111.csv的数据时,ADO识别为英国格式存储的日期,但是对于Test_Data_20190114.csv,由于没有第14个月,因此日期被识别为美国格式。
如何运行类似于上面代码的内容,并使其将.csv
文件中的任何日期识别为美国格式?请注意,数据具有美国格式的日期,但是我的区域计算机设置为英国日期格式;我不想更改这些区域设置。
谢谢。
答案 0 :(得分:1)
距我这样做已经很久了,我忘记了确切的细节。但是我相信您需要使用Schema.ini文件。
在csv文件所在的目录中,添加一个名为Schema.ini的文件,其中每个文件都有一个小节。该部分的设置允许您指定每列的格式,如下所示:
[Test_Data_20190111.csv]
Format=CSVDelimited
ColNameHeader=True
DateTimeFormat=MM/DD/YYYY
Col1=Date(MM/DD/YYYY) DateTime
Col2=TestField Text
[Test_Data_20190114.csv]
Format=CSVDelimited
ColNameHeader=True
DateTimeFormat=MM/DD/YYYY
Col1=Date(MM/DD/YYYY) DateTime
Col2=TestField Text
有关更多详细信息,请参见Scehma.ini files上的Microsoft文档。