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