搜索
查看: 1187|回复: 6

问个小白问题

[复制链接]

10

主题

38

帖子

252

积分

二级会员

Rank: 3Rank: 3

积分
252
发表于 2017-10-20 10:46:34 | 显示全部楼层 |阅读模式
//CSV,TXT格式文本数据
//下面的代码仅使用系统组件,不需要安装ACCESS软件

var txt = /*
Name,Starred,Contact_Id
"孟轲","0",0
"张九龄","1",1
*/
string.save("/Cont.act.csv",..string.fromto(txt) ); //创建测试的TXT数据库

//指定分隔符,不是逗号就要在这里改
import fsys.ini;
var schema = fsys.ini("/schema.ini")
schema.write("Contact.csv","Format","Delimited(,)")

import access;
import console;

var txtDb =  access(  "/" );   
for(rs in txtDb.each("SELECT * FROM [Cont.act.csv] " ) ){             //就是主文件名中有点时,出错。如果不更名,又要直接使用这个csv文件,该怎么写,百度很久,没搜到。  //还有就是csv文件为utf-8时,乱码。
     console.log( rs("Name").value,rs("Starred").value    );  
}

txtDb.close();

console.log("下面试试标准库自带的解析器")
//--------------------------------------------------
console.more(1)

import string.database;
var strDb = string.database(",");

var data = strDb.parse(txt); //解析数据
console.dump( data )

var str = strDb.stringify(data); //存为文本
console.dump( str );
console.pause();
回复

使用道具 举报

10

主题

38

帖子

252

积分

二级会员

Rank: 3Rank: 3

积分
252
 楼主| 发表于 2017-10-20 10:49:18 | 显示全部楼层
本帖最后由 liuhoubin 于 2017-10-20 10:50 编辑

utf8文件怎么直接转存为ansi文件。论坛上也没搜到。

我只有通过修改连接字符串来读取utf8编码的csv文件
conn.ConnectionString ="Provider=Microsoft.ACE.OLEDB.12.0;Data Source="++path.dir++";Extended Properties=""text;HDR=Yes;FMT=Delimited;CharacterSet=65001"""
回复

使用道具 举报

3

主题

51

帖子

312

积分

二级会员

Rank: 3Rank: 3

积分
312
发表于 2017-10-20 10:59:59 | 显示全部楼层
  1. string.fromto(str,65001,0);
复制代码
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2017-10-20 11:03:00 | 显示全部楼层
最近微软的一个补丁导致用数据库访问excel的驱动损坏不能正常使用。
只是操作csv用aardio自带的 string.database就可以。

UTF8转ANSI楼上说的对,用 string.fromto(str,65001,0);
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2017-10-20 11:28:49 | 显示全部楼层
示例里其实已经有了
var txt = /*
Name,Starred,Contact_Id
"孟轲","0",0
"张九龄","1",1
*/
string.save("/Contact.csv",..string.fromto(txt) ); //创建测试的TXT数据库
上面的string.fromto(txt) 就是转为ANSI编码,这时候参数可以省略。
string.fromto(txt) 等价于 string.fromto(txt,65001,0)
回复

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
13974
发表于 2017-10-20 11:46:22 | 显示全部楼层
能偷懒就尽可能的偷懒,在 string.database里加了一个 stringifyA()函数,直接返回ANSI编码文本(而不是默认的UTF8)。
回复

使用道具 举报

10

主题

38

帖子

252

积分

二级会员

Rank: 3Rank: 3

积分
252
 楼主| 发表于 2017-10-20 11:50:06 | 显示全部楼层
更新速度超快。赞!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-12-17 01:01 , Processed in 0.062500 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表