我有一个.csv文件,我从会计软件中导出。最终目标是通过附加记录将“部分”数据导入Access 2010数据库表。我的问题是我需要某种设备来从.csv文件中仅选择选择字段并格式化这些字段(定义数据类型),这样我就可以将“新”格式化.csv导入Access,附加到现有的表,没有任何错误。
我们的会计软件确实允许导出其数据文件中的特定字段,但这是一个繁琐的过程,并且可能会由客户服务部门提供许多错误机会。我需要尽可能地让它成为“白痴”!
答案 0 :(得分:1)
使用查询将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
子句中,HDR=yes
表示我的CSV源文件的第一行包含字段名称。如果您的CSV文件没有,请使用HDR=no
,Access会将伪名称(例如fld1,fld2等)分配给CSV字段。
请注意,如果CSV确实包含字段名称,则它们无需与Access字段的名称匹配。
如果在查询设计器中构建类似的查询,请注意它可能会像这样改变FROM
子句......
FROM (Text;HDR=yes;Database=C:\share\Access\) sample.csv AS csv;
因此,如果发生这种情况,请将其更改为避免语法错误。
我建议您从SELECT
查询开始,以使FROM
子句正常工作。然后根据需要添加转换CSV值所需的功能。在SELECT
查询返回您需要的内容后,将其转换为INSERT
查询。
我希望如果类似的查询可以适用于您的情况,您将不需要Excel作为中介来将CSV数据导入Access。