Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-查询/SQL语句

全面掌握MS ACCESS SQL(52)

时 间:2018-02-01 16:40:04
作 者:Big Young   ID:252  城市:襄阳
摘 要:    用SQL操作TXT或CSV纯文本文件。
正 文:

第五节 用SQL操作TXTCSV纯文本文件

在市面上存在着众多的商业数据库系统,各有着不同的文件结构和文件类型,相互之间并不兼容,有时要在不同的数据库系统间交换数据确实是一件头痛的事情。这时我们需要变通一下,通过一个中间文件作为桥梁来实现数据的交换,这桥梁就是文本文件。

文本文件是计算机文件系统中常见且通用的一种文件类型,它是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。由于文本文件的结构简单,且能够避免其它文件格式遇到的一些问题,因而被广泛地应用于记录信息。当我们不能通过数据库管理系统内置的功能直接交换数据时,纯文本文件就成了我们唯一的重要转换数据的桥梁。

下面我们就来就在ACCESS中如何运用SQL语句命令对纯文本的CSV文件进行操作实现数据的导入与导出的问题进行深入研究与探讨。

一、ACCESS操作CSV文本文件的SQL语法

CSVFile IN ‘path’ ‘TEXT;FMT=CSVDELIMITED;HDR=YES;’

或者:

CSVFile IN ‘’ ‘TEXT;FMT=CSVDELIMITED;HDR=YES;DATABASE=path;’

这里的“CSVFile”就是文本文件名,在这里就相当于数据库中的表,类似于前面所说的DBF文件;这个IN后面的引号中的字符串是描述数据库类型的类型说明字符串,下面对其中的各项作一详细说明:

“TEXT”表示数据库的类型是纯文本文件, “FMT”是英文单词“format”的缩写,表示格式,这是指数据项间的分隔格式符是什么,也就是列与列之间通过什么符号来分隔,可能的取值如下:

FMT=Delimited,表示列间用默认的符号来分隔,一般是逗号。

FMT=Fixed,列的数据保持固定的宽度。

FMT=TabDelimited,列间用制表键来分隔。

FMT=CSVDelimited,用逗号来分隔。

FMT=Delimited (x),用括号中指定的字符来分隔。

FMT=FixedLength,固定宽度,与FIXED相同。

‘path’ ‘TEXT;FMT=CSVDELIMITED;HDR=YES;’

“HDR”HEADER的缩写,表示表头的意思,当取值为“YES”时表示数据行的第一行为表头,就是字段列表。当其值为“NO”时,就表明数据中没有表头数据。

DATABASE”用于指定数据库,当然包括路径,对于文本文件,这里只有“path”指定的路径。

二、用SQLACCESS表导出为CSV文件

在我们的示例数据库中有一个名为“STUDENT”的表,里面包含了几行示例数据,我们现在要将其导出为CSV文件,文件名为“Student_test.csv”,存放在“D:\SQL for ACCESS”文件夹中,导出时包含表头,SQL语句如下:

Select *

INTO [Student_test.csv]

IN 'D:\SQL for ACCESS\' 'TEXT;FMT=CSVDELIMITED;HDR=YES;'

FROM Student;

或者:

Select *

INTO [Student_test.csv]

IN '' 'TEXT;FMT=CSVDELIMITED;HDR=YES;DATABASE=D:\SQL for ACCESS\'

FROM Student;

或者干脆省略掉“NI”,直接写成:

Select *

INTO [TEXT;FMT=CSVDELIMITED;HDR=YES;DATABASE=D:\SQL for ACCESS\].[Student_test.csv]

FROM Student;

三、用SQLCSV文件中的数据导入到ACCESS中并生成新表

由于几种格式的语句写法,实现的效果是一样的,后面我们就只用一种方式来举例了。导入CVS文件并生成表的SQL语句如下:

Select * INTO test
       FROM [Test.txt]
       IN 'D:\SQL for ACCESS' 'TEXT;FMT=CSV;DELIMITED;HDR=YES;';

四、用SQL语句创建一有表头的CVS文件

Create TABLE [TEXT;FMT=CSVDELIMITED;HDR=YES;DATABASE=D:\SQL for ACCESS\].[test.csv]

(

  学号 TEXT(4),

  姓名 TEXT(8),

  性别 TEXT(2),

  语文 INTEGER,

  数学 INTEGER,

  英语 INTEGER,

  信息技术 INTEGER,

  体育 INTEGER

);

五、用SQL命令删除已存在的文本文件

Drop TABLE [TEXT;FMT=CSVDELIMITED;HDR=YES;DATABASE=D:\SQL for ACCESS\].[test.csv];

在创建表的语句“Create TABLE”或删除表的语句“Drop TABLE”中,只能用省略“IN”关键字的格式串.文本文件的格式。

六、用SQLCSV文本文件追加记录

Insert INTO [TEXT;FMT=CSVDELIMITED;HDR=YES;DATABASE=D:\SQL for ACCESS\].[test.csv]

( 学号, 姓名, 性别, 语文, 数学, 英语, 信息技术, 体育 )

VALUES ('0001', '张万', '', 120, 118, 119, 100, 100);

这条语句将向名为“test.csv”的数据表文件中追加一行记录,这里只能用格式串.文本文件的格式。

另外还有几点需要说明:对文本文件的数据表不能用“Update”语句对数据进行更新修改,也不能对数据表中的一行应用“Delete”语句进行删除,如果进行了这类操作,ACCESS数据库管理系统会提示一条错误信息ISAM不支持在链接表中更新数据。或者会弹出一个错误提示框显示ISAM不支持在链接表中删除数据。”另外也不能用“Alter TABLE”命令对已存在的CSV文本文件进行修改,执行此操作系统会提示含有数据的表不支持的操作。



Access软件网官方交流QQ群 (群号:54525238)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助