全面掌握MS ACCESS SQL(52)
时 间:2018-02-01 16:40:04
作 者:Big Young ID:252 城市:襄阳
摘 要: 用SQL操作TXT或CSV纯文本文件。
正 文:
第五节 用SQL操作TXT或CSV纯文本文件
在市面上存在着众多的商业数据库系统,各有着不同的文件结构和文件类型,相互之间并不兼容,有时要在不同的数据库系统间交换数据确实是一件头痛的事情。这时我们需要变通一下,通过一个中间文件作为桥梁来实现数据的交换,这桥梁就是文本文件。
文本文件是计算机文件系统中常见且通用的一种文件类型,它是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。由于文本文件的结构简单,且能够避免其它文件格式遇到的一些问题,因而被广泛地应用于记录信息。当我们不能通过数据库管理系统内置的功能直接交换数据时,纯文本文件就成了我们唯一的重要转换数据的桥梁。
下面我们就来就在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”指定的路径。
二、用SQL将ACCESS表导出为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;
三、用SQL将CSV文件中的数据导入到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”关键字的“格式串.文本文件”的格式。
六、用SQL向CSV文本文件追加记录
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源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- Access对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access判断多条明细的配方或订...(11.30)
- 如何让后台数据库在局域网共享时,且...(11.29)
- 【Access月初月末日期设置方法...(11.29)
- 【Access IIF函数嵌套示例...(11.26)
- Access快速开发平台--使用组...(11.25)
- Access快速开发平台--对上传...(11.22)
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)