使用宏格式化csv文件
我有一个.csv文件,我从我们的会计软件中导出。最终目标是通过附加记录将“部分”数据导入到Access 2010数据库表中。我的问题是,我需要某种设备来从.csv文件中仅选择选择字段并对这些字段进行格式设置(定义数据类型),以便我能够将“新”格式的.csv导入到Access中,附加到现有表,没有任何错误。使用宏格式化csv文件
我们的会计软件确实允许从他们的数据文件具体领域要出口,但它是一个繁琐的过程,并可能存在许多机会,由客户服务部的错误。我需要尽可能使这个“防白痴”!
使用查询将CSV数据直接导入到Access表中。
的查询将可以很容易地选择可用CSV字段的子集。并且查询可以包含用于转换CSV值以与Access目标字段数据类型兼容的函数。
INSERT INTO tblFromCSV (FK_ID, CD, [TIMESTAMP], ts_as_datetime)
SELECT
CLng(csv.FK_ID),
UCase(csv.CD),
csv.TIMESTAMP,
CDate(csv.ts_as_datetime)
FROM [Text;HDR=yes;Database=C:\share\Access\].[sample.csv] AS csv;
在SQL,INSERT INTO tblFromCSV (<here>)
的第一行中列出的字段名称,是将存储的数据导入Access表字段的名称。如果您为所有表格字段提供值,并以与表格字段相同的顺序提供这些值,则可以省略该字段列表。我通常会列出字段。
在FROM
条款,即我的CSV源文件的第一行包含字段名称HDR=yes
信号。如果您的CSV文件没有,请使用HDR=no
,Access会将假名称(例如fld1,fld2等)分配给CSV字段。
需要注意的是,如果不CSV包括字段名,他们需要不匹配的访问字段的名称。
如果你建立的查询设计一个类似的查询,谨防它可能改变FROM
条款是这样的...
FROM (Text;HDR=yes;Database=C:\share\Access\) sample.csv AS csv;
所以,如果出现这种情况,将其更改回,以避免语法错误。
我建议你开始只是一个SELECT
查询来获取FROM
条款的工作。然后根据需要添加您需要转换CSV值的功能。一旦SELECT
查询返回所需内容,请将其转换为INSERT
查询。
我的希望是,如果类似的查询可以为您的情况下工作,你不需要Excel作为中介来获取CSV数据导入Access。
这看起来很有希望。你能解释FK_ID,CD等吗?这些是必要的,还是只是将数据追加到Access表的字段名? – prayingmantes 2013-03-21 01:02:43
我认为你做到了。我明天就会放弃工作并报告。感谢Hans – prayingmantes 2013-03-21 01:11:52
我想我应该澄清。 From语句到底是什么?显然它指向.csv文件,但HDR代表什么?该文件必须在共享文件夹中吗?如果它与Access数据文件在同一个目录中,我假设它会起作用? – prayingmantes 2013-03-21 01:25:23
您可以先将它转移到excel中,删除不需要的列,然后将excel电子表格导出回csv? – 2013-03-20 20:31:44
你有试过什么吗?如果是这样,请提供您的代码。如果没有,请尝试解决这个问题,我们可以进一步帮助你解决你遇到的问题。如果没有某种样本数据来定义你所指的“选择领域”,也很难提供帮助。 – Sam 2013-03-20 20:34:01
我在Excel中尝试了从文本导入功能。我想要做的是自动化我能够手动实现的,可能是通过使用某种宏。 – prayingmantes 2013-03-20 20:42:38