【免费下载】CSV文件操作

合集下载

csvde命令用法

csvde命令用法

csvde命令用法csvde命令是一个常用的Unix和Linux系统命令,用于处理CSV (逗号分隔值)格式的数据文件。

该命令提供了一些功能,如读取、写入、转换和删除CSV文件,以便用户可以轻松地操作这些文件。

本文将详细介绍csvde命令的用法和示例。

一、命令概述csvde命令的基本语法如下:```csscsvde [选项] [文件...]```其中,选项用于指定各种参数和功能,文件是要处理的CSV文件。

csvde命令支持多种选项和文件格式,使得用户可以灵活地处理CSV数据。

二、命令选项以下是csvde命令的一些常用选项:1. -i/--input:指定输入文件格式,可以是CSV、TSV或其他格式。

2. -o/--output:指定输出文件格式,可以是CSV、TSV或其他格式。

3. -r/--read:从CSV文件中读取数据。

4. -w/--write:将数据写入CSV文件。

5. -t/--transform:对CSV数据进行转换。

6. -d/--delete:删除指定的CSV文件。

7. -f/--force:强制执行操作,即使文件不存在或具有其他属性。

8. -q/--quiet:静默模式,仅显示执行结果而不显示详细信息。

9. 其他选项:还有其他一些选项,如-h/--help(显示帮助信息)等。

三、使用示例下面是一些使用csvde命令的示例:1. 读取CSV文件:```bashcsvde -r input.csv > output.csv```该命令将读取名为input.csv的CSV文件,并将数据写入名为output.csv的新文件中。

2. 写入CSV文件:```bashcsvde -w output.csv input.txt```该命令将将名为input.txt的文本文件中的数据写入名为output.csv的新CSV文件中。

3. 转换CSV数据:```bashcsvde -t 'field1=new_field1,field2=new_field2'input.csv > output.csv```该命令将使用指定的转换规则(field1=new_field1,field2=new_field2)对input.csv中的数据进行转换,并将结果写入output.csv中。

CSV格式文件的编辑全攻略

CSV格式文件的编辑全攻略

【原创】CSV格式文件的编辑全攻略2010-09-28 04:58最近换了新手机,高兴了没两天头疼的事情就来了,原来用的诺基亚N73导出的联系人名单是vcf的,但现在的手机只认CSV格式,而且我的联系人下经常都有好几个电话,用SIM卡导入相当麻烦,所以只能想办法转换过来。

用谷歌百度了大半夜,总算转换了过来。

网上办法众多,就不再赘述了,个人感觉还是用Foxmail转换最省心。

终于说道重点了。

转成CSV格式以后却不能导入,后来才发现原因:每款手机的CSV格式都略有不同,所以不能盲目导入。

最重要的一点,千万不要用excel编辑CSV,下场无一例外都是悲剧,这一点我深有体会。

明白了以上两点问题就不是那么难了首先要做的就是用新手机导出一份csv文件作模板。

这是我转换过来的SCV文件,我只用excl看了,并没有编辑。

这是模板,注意到表头的不同了吧搞到模板以后,用word打开模板:选择其他编码——Unicode 点确定进入word后,在常用按钮栏里打开“显示/隐藏编辑标记”这样就可以看到CSV文件中的制表符,(之所以用excel编辑后不能导入就是这些制表符被打乱了)。

还需要改的一个设置在工具----自动更正选项里:把键入时自动套用格式选项卡里的直引号替换为弯引号勾选去掉这一步是一定要做的,否则打出的双引号都是中文的,文件将不能导入。

让CSV文件露出“真面目”现在我们就能很明了的看到CSV文件的格式了。

每个值都是用直引号括起来的,值与值之间用制表符隔开,第一个值等于第一个项目名,第二个个值等于第二个项目名,以此类推。

知道了CSV的格式后我们就能正确的编辑了。

但是又有个问题来了,如果有两三百个联系人,一个一个都要敲上双引号和制表符,那不疯掉了!!还得要想想办法,对了!我们还有WORD的神器----替换功能。

要用替换功能,我们首先要做点准备工作,再猛的炮火射不准也是瞎忙活,我们要制造一批可以大喊“向我开炮的”炮灰们来提高准度。

读取csv文件的方法

读取csv文件的方法

读取csv文件的方法CSV是逗号分隔值(Comma-SeparatedValues)的缩写,是一种常见的文件格式,用于存储和交换数据。

它将数据按行排列,每行数据由逗号分隔,通常第一行是列名。

在Python中,我们可以使用内置的csv模块来读取csv文件。

以下是读取csv文件的方法:1. 导入csv模块在Python中,使用csv模块需要先导入它。

可以使用以下语句导入csv模块:import csv2. 打开csv文件使用open()函数打开csv文件。

可以在open()函数中指定文件名和打开模式。

打开模式通常为'r'表示读取模式。

with open('filename.csv', 'r') as file:# code to read the file在上述代码中,使用with语句打开文件,这样可以确保文件在使用完毕后被关闭。

3. 读取csv文件内容可以使用csv模块的reader()函数来逐行读取csv文件中的内容。

以下是读取csv文件的完整代码:import csvwith open('filename.csv', 'r') as file:reader = csv.reader(file)for row in reader:print(row)在上述代码中,使用csv模块的reader()函数创建一个reader 对象,然后使用for循环逐行读取csv文件中的内容。

每一行的内容都被存储在一个列表中,列表的每个元素是一个单元格的值。

4. 读取特定列的内容如果只需要读取csv文件中的特定列,可以使用以下代码:import csvwith open('filename.csv', 'r') as file:reader = csv.reader(file)for row in reader:print(row[0]) # 读取第一列的内容在上述代码中,使用row[0]来读取第一列的内容。

CSV文件导出详细讲解

CSV文件导出详细讲解

CSV⽂件导出详细讲解⼀、准备jar 如下所以放⼊maven配置⽂件中⼆、controller层三、SERVICE层四、CsvUtil⽂件/*** csv⽂件导⼊导出*/public class CsvUtil {/*** 获取csv⽂件头部信息* @param inputWay 模板⽂件路径* @return* @throws IOException*/public static List<String> getHeader(String inputWay) throws IOException {List<String> headers = new ArrayList<>();DataInputStream in = new DataInputStream(new FileInputStream(new File(inputWay)));BufferedReader br= new BufferedReader(new InputStreamReader(in,"GBK"));CSVParser parser = CSVFormat.EXCEL.parse(br);CSVRecord strings = parser.getRecords().get(0);int size = strings.size();for (int i = 0; i < size; i++) {headers.add(strings.get(i));}return headers;}/*** ⽣成csv⽂件* @param headers csv⽂件头部信息* @param outputWay 输出地址* @param data 填充数据* @throws IOException*/public static void generateCsvFile(List<String> headers, String outputWay, List<List<Object>> data) throws IOException { FileOutputStream fos = new FileOutputStream(outputWay);OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK");String[] toBeStored = headers.toArray(new String[headers.size()]);CSVFormat csvFormat = CSVFormat.DEFAULT.withHeader(toBeStored);CSVPrinter csvPrinter = new CSVPrinter(osw, csvFormat);for (int i = 0; i < data.size(); i++) {//处理掉最后⼀个版本号List<Object> singleData = data.get(i);csvPrinter.printRecord(singleData);}csvPrinter.flush();csvPrinter.close();}/*** 写出csv⽂件流* @param response* @param inputWay*/public static void exportCsvFile(HttpServletResponse response,String inputWay,String fileName) throws IOException {OutputStream out = response.getOutputStream();byte[] b = new byte[1024];File fileLoad = new File(inputWay);response.reset();response.setContentType("application/csv");response.setHeader("content-disposition", "attachment;filename="+ new String((fileName+".csv").getBytes()));long fileLength = fileLoad.length();String length1 = String.valueOf(fileLength);response.setHeader("Content_Length", length1);FileInputStream in = new FileInputStream(fileLoad);int n;while ((n = in.read(b)) != -1) {out.write(b, 0, n); //每次写⼊out1024字节}in.close();out.close();// 删除临时⽂件fileLoad.delete();}}五、总结中间处理业务数据就可以了,放⼊到保存的list中,输出格式⼀致就可以成功导出了!。

使用Python操作CSV文件的代码示例

使用Python操作CSV文件的代码示例

使用Python操作CSV文件的代码示例Python是一种功能强大的编程语言,专门用于数据处理和分析。

它提供了丰富的库和工具,使操作各种数据文件变得轻松。

其中,对于CSV文件的操作尤为方便。

CSV(Comma Separated Values)文件是一种常用的数据存储格式,用于在电子表格和数据库之间交换数据。

它将数据行组织成逗号分隔的值列表,每行表示一个记录,每个值表示记录中的一个字段。

为了操作CSV文件,我们需要使用Python中的csv模块。

下面是一些常用的CSV文件操作方法示例:1.读取CSV文件:```pythonimport csvwith open('data.csv', 'r') as file:reader = csv.reader(file)for row in reader:print(row)```这段代码打开名为'data.csv'的文件,并使用csv.reader()函数将文件内容读取为一个迭代器。

通过循环遍历迭代器,我们可以逐行读取CSV文件的内容并打印输出。

2.写入CSV文件:```pythonimport csvdata = [('Name', 'Age', 'City'),('John', 28, 'New York'),('Alice', 32, 'Los Angeles'),('Bob', 45, 'Chicago')]with open('output.csv', 'w', newline='') as file:writer = csv.writer(file)writer.writerows(data)```这段代码创建了一个包含记录的列表,并使用csv.writer()函数将数据写入名为'output.csv'的文件中。

csv编辑格式

csv编辑格式

csv编辑格式摘要:1.引言2.CSV 文件简介3.CSV 编辑器的使用场景4.几款常见的CSV 编辑器介绍4.1.Notepad++4.2.Sublime Text4.3.Visual Studio Code4.4.Excel5.CSV 编辑器的使用技巧6.总结正文:CSV(逗号分隔值)文件是一种常见的数据存储格式,广泛应用于各种场景,如数据交换、数据导入和导出等。

为了更好地编辑和处理CSV 文件,许多CSV 编辑器应运而生。

本文将为您介绍几款常见的CSV 编辑器及其使用技巧。

首先,让我们了解一下CSV 文件。

CSV 文件是一种纯文本格式,其中每一行代表一个记录,每一列代表一个字段。

字段之间用逗号分隔,不同的记录之间用换行符分隔。

CSV 文件通常用于存储表格数据,具有一定的灵活性和可读性。

接下来,我们来了解一下几款常见的CSV 编辑器。

1.Notepad++otepad++是一款免费且功能强大的文本编辑器,支持多种编程语言和文件格式。

它也支持CSV 文件的编辑,具有丰富的功能和友好的界面。

使用Notepad++编辑CSV 文件时,可以轻松地实现查找、替换、分割和合并等操作。

此外,它还支持多种编程语言的语法高亮和自动补全,方便开发者使用。

2.Sublime TextSublime Text 是一款付费但口碑极佳的文本编辑器,以其轻量级、高性能和强大的扩展性而著称。

Sublime Text 同样支持CSV 文件的编辑,用户可以通过安装插件扩展其功能。

使用Sublime T ext 编辑CSV 文件时,可以充分利用其丰富的快捷键和强大的编辑功能,提高工作效率。

3.Visual Studio CodeVisual Studio Code 是一款免费且功能强大的跨平台代码编辑器,由微软开发。

它支持多种编程语言和文件格式,包括CSV。

使用Visual Studio Code 编辑CSV 文件时,可以利用其丰富的插件和扩展,实现各种高级功能。

CVS操作手册

CVS操作手册

CVS操作⼿册CVS操作管理⼿册1.安装篇所需⽂件cvsnt-2.5.03.2382.msi、wincvs.exe、Python-2.2.3.exe安装步骤因为CVS中⽂版需要Python语⾔⽀持所以我们需先安装Python-2.2.3.exe 默认安装即可安装CVSNT服务器:双击CVSNT-2.503 点击NEXT->同意协议->NEXT->点击Typical->Install->Finish安装WinCvs客户端:双击wincvs.exe 默认安装即可2. 配置篇2.1 配置CVS服务器开始->所有程序->CVSNT->CVSNT Control Panel2.1.1在About页确认CVSNT、CVSNT Lock服务正常和稳定运⾏如下图2.1.2选择Repository configuration页⾯点按Add按钮,选择已经准备好的模块根⽬录,如:E:\htfz这个⽬录(没有的话也可以直接在location中写路径),确认,OK,Yes,这时会在E:\htfz下⾯建⽴CVSROOT⽬录,这是CVS默认的管理⽬录(默认模块)。

详细步骤如下图2.1.3选择ServerSeting页⾯,Run as 选择第⼆个,其他默认确认即可。

2.1.4 ⽤户管理采⽤windows系统⽤户管理机制即每个开发者⽤⼀个系统⽤户作为CVS的管理⽤户注:在添加系统⽤户(仅针对win2003)时应注意⽤户名和登录名之间的区别以免出现登录失败2.2 CVS客户端配置:开始->所有程序->WinCVS中⽂版->CVS1.3 打开客户端界⾯在使⽤WinCvs⼯作前,我们需要对它进⾏⼀些基本设置。

2.2.1 登录⾸选项设置(1)⾸先,我们点击主菜单【管理】选择菜单项【设置】, 见下图:在【设置】对话框中,我们先进⾏【普通】设置:这⾥的设置有:【认证⽅式】。

CVS提供多种认证⽅式,例如pserver、rhosts、gserver、local等。

javacsv 用法

javacsv 用法

javacsv 用法JavaCSV 是一个开源的 Java 库,用于处理 CSV(逗号分隔值)文件。

CSV 文件是一种简单的文本文件格式,用于将表格数据存储为逗号分隔的值。

使用 JavaCSV 可以轻松地读取和写入 CSV 文件,以及对 CSV 数据进行解析和操作。

本文将介绍如何使用 JavaCSV 库,包括导入库、读取 CSV 文件、写入 CSV 文件和对 CSV 数据进行解析和操作。

1. 导入 JavaCSV 库要使用 JavaCSV 库,首先需要将其导入到 Java 项目中。

可以通过以下步骤完成导入:1.1 下载 JavaCSV访问 JavaCSV 的官方网站,下载最新版本的 JavaCSV 库。

解压下载的文件,得到一个名为 "javacsv.jar" 的 JAR 文件。

1.2 导入 JAR 文件将 "javacsv.jar" 文件复制到 Java 项目的 "lib" 目录中,然后在项目中添加该 JAR 文件的依赖。

2. 读取 CSV 文件JavaCSV 提供了 CsvReader 类,可以用于读取 CSV 文件。

以下是读取 CSV 文件的示例代码:import java.io.FileReader;import java.io.IOException;import com.csvreader.CsvReader;public class CSVReaderExample {public static void main(String[] args) {try {CsvReader csvReader = new CsvReader(newFileReader("data.csv"));csvReader.readHeaders(); // 读取 CSV 文件的列名while (csvReader.readRecord()) {String column1 = csvReader.get("Column1"); // 获取指定列的值String column2 = csvReader.get("Column2");// 处理 CSV 数据}csvReader.close();} catch (IOException e) {e.printStackTrace();}}```在上面的代码中,首先创建了 CsvReader 对象,然后调用`readHeaders()` 方法读取 CSV 文件的列名。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB6.0 CSV文件操作2008-05-27 18:04功能:读取CSV文件的内容并导入到数据库中环境:Access2003 语言:VBA(对于使用VB6.0同样适用)数据库:D:\db1.mdb数据表:testuserId 数值型userName 文本型CSV文件:D:\test.csv (使用Excel打开)编号姓名123 王五456 李"“四789 张'三注意,在实际处理CSV文件前,程序开发者必须了解CSV文件的真实结构。

为了说明在处理CSV文件时可能遇到的特殊情况,用于测试的CSV文件的最后两行的“姓名”列均插入了特殊字符。

由于在显示CSV文件内容时,Excel已经对CSV文件进行了处理,因此,上面使用Excel所看到的内容并不是CSV的真实内容。

如果使用文本编辑器打开,可以看到真实的内容为:----------编号, 姓名123, 王五456, "李""“四"789, 张'三----------之所以出现这样的内容,是因为我们通常使用Excel编辑CSV文件,然后使用另存为命令保存为CSV文件。

这一过程中,Excel会隐蔽地进行如下处理:1CSV文件将Excel的同一行中不同单元格的内容使用,(半角逗号分隔开)2 当内容中出现半角双引号时会自动被转义为两个双引号,即"";同时内容整体的两端自动被双引号引起来。

例如:李"“四-> "李""“四"了解了数据表和CSV文件的结构,下面就可以编写代码了。

------------------------------------------------------------1. Option Compare Binary 声明作用:声明当前VB环境中字符串的比较方式这里的Binary 声明当前VB环境中的字符串依照其在内存中的字节码来进行比较如果你使用的是普通VB6.0环境,默认的字符串比较就是依照字节码比较但是,如果你使用的是Access VBA进行开发,就要特别注意了。

Access VBA开发时会在全部代码之前默认追加声明:Option Compare Database也就是说,Access VBA默认依照Access数据库中存储的比较规则进行字符串比较所以,普通VB6.0开发环境与Access VBA开发环境的默认字符串比较方式不同。

VB6.0的默认字符串比较方式是Binary,Access VBA的默认字符串比较方式是Database。

注意:Database比较方式对全角和半角不敏感。

例如,“,”,与" 在Database方式下将被视为相等所以,如果你的程序使用Access VBA开发,同时又要进行全角与半角的比较时应当使用Binary比较方式,而不是接受Access VBA的默认设置,即你的程序的首行必须是:Option Compare Binary2.全部代码如下:'声明当前VB环境中字符串的比较方式为字节码Option Compare Binary'要测试本例的文件操作,就新建一个窗体,在上面添加一个名为“cmdImport”的按钮,'单击后即执行下面的方法,完成文件读取和写入数据库的操作'函数开始--------------------------------------------------'主函数,执行的开始Private Sub cmdImport_Click()Dim cn As New ADODB.Connection'指定连接字符串,本例连接到D:\db1.mdb 数据库cn.ConnectionString = _"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\db1.mdb"'开启连接,准备对数据库操作cn.Open'定义存储文件名的对象Dim fileName As String'指定要读取的CSV文件的名称本例为D:\test.csvfileName = "D:\test.csv"'执行ImportFile函数,完成以下操作:'1 读取D:\test.csv 文件的内容'2 将读取的文件内容写入D:\db1.mdb 数据库的test 表中ImportFile cn, "test", fileName'完成操作后关闭连接cn.Close'将连接设置为Nothing ,及时释放其所占用的内存空间Set cn = NothingEnd Sub'函数结束--------------------------------------------------'函数开始--------------------------------------------------'参数------------------------------------------------------------------'1. cn 使用的数据库联接,本例连接到D:\db1.mdb'2. tblName 使用的数据库表名称,本例为test'3. FileFullPath 读取的CSV文件目录(包括文件名),本例为D:\test.csv'4. FieldDelimiter 指定CSV文件同一行内容以哪种字符分隔默认为,(半角逗号)'5. RecordDelimiter 指定CSV文件不同行内容以哪种字符分隔默认为vbCrLf(回车换行符)'参数------------------------------------------------------------------Public Sub ImportFile(cn As Object, _ByVal tblName As String, FileFullPath As String, _Optional FieldDelimiter As String = ",", _Optional RecordDelimiter As String = vbCrLf)Dim cmd As New mandDim rs As New ADODB.RecordsetDim iFileNum As IntegerDim sFileContents As StringDim sTableSplit() As StringDim sRecordSplit() As StringDim lCtr As IntegerDim iCtr As IntegerDim lRecordCount As LongDim iFieldsToImport As IntegerDim asFieldNames() As StringDim abFieldIsString() As BooleanDim iFieldCount As IntegerDim sSQL As String'判断传入的cn参数是否是数据库连接对象,如果不是,退出程序If Not TypeOf cn Is ADODB.Connection Then Exit Sub'判断指定目录下的CSV文件是否真实存在,如果不是,退出程序If Dir(FileFullPath) = "" Then Exit Sub'判断数据库联接是否已打开,如果没有则打开连接If cn.State = 0 Then cn.Open'使用数据库联接cn 打开一个数据集rs'rs 的数据来源是指定表名tblName 中的全部数据,打开方式是adOpenKeysetrs.Open "select * from " & tblName, cn, adOpenKeyset'取得数据集字段数目iFieldCount = rs.Fields.Count'重新定义asFieldNames的大小,用来存放数据表(本例为test)的字段名ReDim asFieldNames(iFieldCount - 1) As String'与上面的asFieldNames中存储的字段名一一对应,记录数据表的每一个字段是否是字符串类型ReDim abFieldIsString(iFieldCount - 1) As Boolean'遍历数据表的所有字段:For iCtr = 0 To iFieldCount - 1'记录数据表的字段名asFieldNames(iCtr) = "[" & rs.Fields(iCtr).Name & "]"'记录数据表的字段是否是字符串类型abFieldIsString(iCtr) = FieldIsString(rs.Fields(iCtr))Next'使用FreeFile分配一个文件号iFileNum = FreeFile'打开指定路径下的文件(本例中即D:\test.csv 文件)'注意:这里使用字节(Binary)方式打开文件,'原因:在下面读取CSV文件内容的操作中使用了LOF函数取得文件长度' 如果使用文本方式打开文件,那么,由于文件中存在中文字符,‘长度计算就会不正确,因此,采用Binary方式打开文件Open FileFullPath For Binary As #iFileNum'使用LOF计算文件长度,分配所需的内存空间,并使sFileContents 变量指向这一空间sFileContents = Space(LOF(iFileNum))'将文件内容全部读取到sFileContents 变量中Get #iFileNum, , sFileContents'读取完成后,关闭文件Close #iFileNum'以vbCrLf(回车换行符)作为换行标志,将CSV文件的内容分解为一个由若干字符串行组成的数组'并把数组内容存储到sTableSplit 数组中sTableSplit = Split(sFileContents, RecordDelimiter)'获得sTableSplit 数组上界(即CSV文件行数),存储到lRecordCount 中lRecordCount = UBound(sTableSplit)'开始事务处理cn.BeginTrans' lRecordCount 记录了CSV文件的行数,下面通过循环依次处理CSV文件的每一行For lCtr = 1 To lRecordCount - 1'以,(半角逗号)将CSV文件同一行中的内容划分为一个字符串数组,’并把数组内容存储到sRecordSplit 数组中sRecordSplit = Split(sTableSplit(lCtr), FieldDelimiter)'CSV文件的一行中以,(半角逗号)划分出的数组长度和数据表的字段数可能不一致‘因此,取两者之中长度最小的作为处理的基准'例如,CSV文件的某一行数据为 马,牛,羊’这一行数据划分后获得的sRecordSplit 数组内容为sRecordSplit = {马,牛,羊},长度为3‘而数据表有userId 和userName 两个字段,字段数为2,那么最终将iFieldsToImport = 2iFieldsToImport = IIf(UBound(sRecordSplit) + 1 < _iFieldCount, UBound(sRecordSplit) + 1, iFieldCount)'下面,要把CSV文件当前行的内容插入到数据表中,为此开始准备SQL文本sSQL = "INSERT INTO " & tblName & " ("'使用循环将asFieldNames 数组中存储的字段名依次追加到SQL文中For iCtr = 0 To iFieldsToImport - 1sSQL = sSQL & asFieldNames(iCtr)If iCtr < iFieldsToImport - 1 Then sSQL = sSQL & ","Next iCtrsSQL = sSQL & ") VALUES ("' sRecordSplit 是在上面的处理中,由CSV文件同一行中的内容所转化成的数组'现在,将这个数组的内容添加到SQL文本的VALUES集合中For iCtr = 0 To iFieldsToImport - 1If abFieldIsString(iCtr) Then’如果值为文本,需要做特别处理(主要是针对CSV文件中的半角单引号和半角双引号)sSQL = sSQL & prepStringForSQL(sRecordSplit(iCtr))Else‘如果不是文本,就直接添加到SQL文本的VALUES集合中sSQL = sSQL & sRecordSplit(iCtr)End If'如果不是最后一个值,那么,在追加到SQL文本的VALUES集合时,不要忘记’在其后追加一个半角逗号If iCtr < iFieldsToImport - 1 Then sSQL = sSQL & ","Next iCtr'添加括号,完成SQL文本sSQL = sSQL & ")"'执行插入操作cn.Execute sSQL'下面继续处理CSV文件的下一行数据:Next lCtr'提交事务处理(即将上面所有插入行的操作正式提交)mitTrans'关闭数据集rs.Close'设置为空,释放资源Set rs = NothingEnd Sub'函数结束--------------------------------------------------'函数开始--------------------------------------------------'判断数据表的字段是否是字符串类型Private Function FieldIsString(FieldObject As ADODB.Field) _As BooleanSelect Case FieldObject.Type'如果数据表的字段是如下类型中的一个,则认为该字段是字符串类型Case adBSTR, adChar, adVarChar, adWChar, adVarWChar, _adLongVarChar, adLongVarWCharFieldIsString = True'否则,不是字符串类型Case ElseFieldIsString = FalseEnd SelectEnd Function'函数结束--------------------------------------------------'函数开始--------------------------------------------------'功能:对来自CSV文件的文本进行预处理‘如果我们在Excel文件中输入的文本中含有半角双引号,按照本文最上面分析的,’当我们以CSV的格式保存文件时,Excel会在我们输入的文本中额外插入一些半角双引号,‘在执行INSERT操作后,这些多余的半角双引号也会被插入到数据表中,而这样的结果不是我们’想要的,例如,Excel中输入的李"“四会被自动转换成"李""“四" 字符串两端被追加了半角双引号,' 中间的一个半角双引号也变为了两个,我们真正想要插入数据表的是李"“四而不是"李""“四"’所以,必须做预处理去掉多余的半角双引号,然后再加入到SQL语句中‘另外,如果我们在Excel文件中输入的文本中含有半角单引号,虽然Excel不会做特别处理,’但是,由于SQL语法中规定使用单引号来引用字符串,所以,如果INSERT语句的VALUES集合中‘含有单引号,就会出现问题,例如:我们在Excel中输入张'三,保存到CSV文件中仍为张'三’在包含到INSERT语句中就会成为VALUES(...,...,'张'三') 从而导致SQL语法错误‘Private Function prepStringForSQL(ByVal sValue As String) _As StringDim sAns As StringsAns = sValue'去掉字符串两端可能被自动追加的半角双引号例如:"李""“四" -> 李""“四If Len(sAns) <> 0 ThenIf Left(sAns, 1) = Chr(34) ThensAns = Right(sAns, Len(sAns) - 1)If Len(sAns) <> 0 ThenIf Right(sAns, 1) = Chr(34) ThensAns = Left(sAns, Len(sAns) - 1)End IfEnd IfEnd IfEnd If'去掉字符串中可能被自动追加的半角双引号例如:李""“四-> 李"“四sAns = Replace(sAns, Chr(34) & Chr(34), Chr(34))'在SQL文本中,半角单引号的转义字符是两个连续半角单引号,因此执行如下操作,'将字符串中可能存在的每个半角单引号替换成两个半角单引号,例如:张'三-> 张''三sAns = Replace(sAns, Chr(39), "''")'按照SQL的文法规范,把字符串两端用半角单引号引起来,‘例如:VALUES(1,2,3,中国) -> VALUES(1,2,3,'中国')sAns = "'" & sAns & "'"'预处理完毕,返回处理好的字符串prepStringForSQL = sAns End Function。

相关文档
最新文档