如何让 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
文件:
“你的path\Test\Test_Data_20190111.csv”
“你的path\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
文件中的任何日期识别为美国格式?请注意,数据的日期格式为美国格式,但我所在地区的计算机设置为英国日期格式;我不想更改这些区域设置。
谢谢。
很久没做这个了,具体细节忘记了。但是我相信您需要使用 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 的文档。
我有一个名为 *your path*\Test\Test.accdb
的 MS Access 数据库
它包含一个名为 Table1
我有两个 .csv
文件:
“你的path\Test\Test_Data_20190111.csv”
“你的path\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
文件中的任何日期识别为美国格式?请注意,数据的日期格式为美国格式,但我所在地区的计算机设置为英国日期格式;我不想更改这些区域设置。
谢谢。
很久没做这个了,具体细节忘记了。但是我相信您需要使用 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 的文档。