1

我有一个从我们的会计软件中导出的 .csv 文件。最终目标是通过附加记录将“部分”数据导入 Access 2010 数据库表。我的问题是我需要某种设备从 .csv 文件中仅选择选择字段并格式化这些字段(定义数据类型),以便我能够将“新”格式化的 .csv 导入 Access,附加到现有的表,没有任何错误。

我们的会计软件确实允许导出其数据文件中的特定字段,但这是一个繁琐的过程,并且可能会给客户服务部门带来很多错误机会。我需要尽可能地使它成为“防白痴”!

4

1 回答 1

1

使用查询将 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。

于 2013-03-21T00:06:17.833 回答