我有一个csv文件(每周更新3次。我无法控制其格式,因此无法规范化)我创建了一个到MS Access 2016数据库的OBDC链接。(我选择了MS Access to用它刷新我的技能,否则将在SQL中完成。我已经尝试了为链接表设置OBDC链接的各种排列,但没有为其他字段提供最佳结构。
CSV文件如下所示:
beginsWithHash
我正在尝试创建一个查询,以逗号将字段3分成6个组成部分。我已经看到很多使用InStr和Mid函数(例如看到here)分离2个或3个组件(但绝不会超过它们)的示例。
我是否必须创建多个表达式以将此字段分隔为其组件,或者它们是替代解决方案?
答案 0 :(得分:1)
我建议使用Split function将数据写入本地表。它允许您将该字段拆分为数组。然后使用VBA将整个记录写入Access。
所以,比如:
Dim db as Database
Dim rec as Recordset
Dim rec2 as Recordset
Set db = CurrentDB
Set rec = db.OpenRecordset("SELECT * FROM MyLinkedTable")
Set rec2 = db.OpenRecordset("SELECT * FROM MyLocalTable")
Do while rec.EOF = False
rec2.AddNew
rec2("Field1") = rec("Field1")
rec2("Field2" = rec("Field2")
strArray = Split(rec("Field3"), ",")
rec2("Part1") = strArray(0)
rec2("Part2") = strArray(1)
etc...
rec2.Update
rec.MoveNext
以上是“aircode”并且完全未经测试,但它可能非常准确,应该让你入门。
答案 1 :(得分:0)
所以你的文件似乎遵循CSV规范,其中值可以放在括号之间......
然后,您应该可以直接将其作为ADODB记录集(*)打开。与“Valores Principales”数据对应的列将包含纯文本字符串,即6个值,由逗号分隔。
(*)不知道它是否适用于DAO记录集...例如,检查此链接(它是excel但它是相同的逻辑):return csv file as recordset