如何让 ADO 将 .csv 文件中的所有日期识别为美国日期?

How can I get ADO to recognize all dates in a .csv file as US dates?

我有一个名为 *your path*\Test\Test.accdb 的 MS Access 数据库 它包含一个名为 Table1

的 table

我有两个 .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 文件中的任何日期识别为美国格式?请注意,数据的日期格式为美国格式,但我所在地区的计算机设置为英国日期格式;我不想更改这些区域设置。

谢谢。

很久没做这个了,具体细节忘记了。但是我相信您需要使用 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

有关详细信息,请参阅 Microsoft 关于 Scehma.ini files 的文档。