【问题标题】:MS Access VBA import csv into new table by using SQL and Schema.ini - Force column names of tableMS Access VBA 使用 SQL 和 Schema.ini 将 csv 导入新表 - 强制表的列名
【发布时间】:2019-01-29 16:55:10
【问题描述】:

C:\Excel 文件夹中,我有这些文件:

  • test.csv
  • Schema.ini

Schema.ini 包含:

[test.csv] 
Format=Delimited(;)
ColNameHeader=True
MaxScanRows=2
CharacterSet=ANSI
DecimalSymbol=, 

Col1=Lot Char
Col2=dateResa1 Date
Col3=PRIXLOG_IMMO Double
Col4=MONTANT_CA_ESTIME Double

在 MS Access 中,我有一个导出例程,它将 csv 文件数据加载到创建的表中:TEST

Private Sub importCSV_Click()

Dim strSQL As String

On Error Resume Next: DoCmd.DeleteObject acTable, "TEST": On Error GoTo 0

strSQL = " SELECT CStr(t.lot), CDate(t.dateResa1), CDbl(t.PRIXLOG_IMMO), CDbl(t.MONTANT_CA_ESTIME) " & _
" INTO TEST  " & _
" FROM [Text;FMT=Delimited;HDR=YES;CharacterSet=ANSI;DATABASE=C:\Excel].[test.csv] t"
CurrentDb.Execute strSQL

End Sub

效果很好,但是表 MS-Access TEST 的列名被命名为:

  • Expr1001
  • Expr1002...等等

有没有办法通过只使用 SQL 和Schema.ini 来强制列表 TEST 的名称?

解决方案:

因为我用 CStr、CDate... 对字段进行了转换,所以字段名称必须用别名重新定义,并且锦上添花,别名可以与字段名称相同。我测试过了

【问题讨论】:

  • 感谢阿加顿,但说实话一点也不因为提出的问题是复杂和沉重的
  • 因为我用 CStr, CDate... 对字段进行了转换,所以字段名称必须重新定义为别名和锦上添花,别名可以与字段名称相同。我测试过了

标签: sql ms-access-2013 columnname import-csv


【解决方案1】:

为了避免Access SQL中的字段转换,Schema.ini中每列的类型声明就足够了,并且允许在Access查询中使用*!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 2017-06-05
    • 2021-02-25
    • 2022-01-04
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多