怎样打开.db的数据库文件啊

怎样打开.db的数据库文件啊,第1张

如果你的要求是用一种语言来打开数据库的话,那么你必须首先了解dbf文件的格式,这一点非常的重要。下面是一个c语言写的读dbf文件的小程序,你看看吧!,你可以编辑一下,看可否达到你的要求!

#include <stdlibh>

#include <stdioh>

#define NFIELDS 5

#define TRUE 1

#define FALSE 0

/ DBF文件头结构 /

struct dbf_head{

char vers;

unsigned char yy,mm,dd;

unsigned int no_recs;

unsigned short head_len,rec_len;

char reserved[20];

};

/ DBF字段描述结构 /

struct field_element{

char field_name[11];

char field_type;

unsigned int offset;

unsigned char field_length;

unsigned char field_decimal;

char reserved1[2];

char dbaseiv_id;

char reserved2[10];

char production_index;

};

char dbf_fields_name[NFIELDS]={

"a", "b","c","d","e"

};

/ 全局变量 /

struct dbf_head file_head;

struct field_element fields;

int length;

unsigned int offset;

/ 整形数字节顺序改变函数 /

void revert_unsigned_short(unsigned short a)

{

unsigned short left,right;

left=right=a;

a=((left&0x00ff)<<8)|((right&0xff00)>>8);

}

void revert_unsigned_int(unsigned int a)

{

unsigned int first,second,third,forth;

first=second=third=forth=a;

a=((first&0x000000ff)<<24)|((second&0x0000ff00)<<8)|

((third&0x00ff0000)>>8)|((forth&0xff000000)>>24);

}

/ 主函数代码 /

void main()

{

register int i,j;

FILE fp_dat;

char buffer;

char allspace;

int fields_count, matched=FALSE;

unsigned int counts;

/ 打开dbf文件 /

if((fp_dat=fopen("adbf","rb"))==NULL){

fprintf(stderr,"Cannot open dbf file to read!\n");

exit(1);

}

/ 读取表头纪录 /

fseek(fp_dat,0L,SEEK_SET);

fread((void)&file_head,sizeof(struct dbf_head),1,fp_dat);

revert_unsigned_int(&file_headno_recs);

revert_unsigned_short(&file_headhead_len);

revert_unsigned_short(&file_headrec_len);

/ 计算字段数 /

fields_count=(file_headhead_len-sizeof(struct dbf_head)-1-263)/sizeof(struct field_element);

/ 开辟存储字段子记录的空间 /

if((fields=(struct field_element)malloc(sizeof(struct field_element)fields_count))==NULL){

fprintf(stderr,"Cannot allocate memory for fields array !\n");

fclose(fp_dat);

exit(2);

}

/ 开辟存储一条数据记录的空间 /

if((buffer=(char)malloc(sizeof(char)file_headrec_len))==NULL){

fprintf(stderr,"Cannot allocate memory for record buffer!\n");

fclose(fp_dat);

exit(3);

}

/ 开辟一个全为空格的纪录,以便后面做比较 /

if((allspace=(char)malloc(sizeof(char)file_headrec_len))==NULL){

fprintf(stderr,"Cannot allocate memory for all_space record buffer!\n");

fclose(fp_dat);

exit(4);

}

else{

memset((void)allspace,'\x20',file_headrec_len-1);

allspace[file_headrec_len]='\0';

}

/ 读取所有的字段子记录,调整整形数的字节顺序 /

fread((void)fields,sizeof(struct field_element),fields_count,fp_dat);

for(i=0;i<fields_count;i++)

revert_unsigned_int(&fields[i]offset);

/ 计算各个字段的字节偏移量,第一字节为删除标记 /

fields[0]offset=1;

for(i=1;i<fields_count;i++)

fields[i]offset=fields[i-1]offset+(unsigned short)fields[i-1]field_length;

/ 开辟存储字段长度和偏移量的数组 /

length=(int)malloc(sizeof(int)fields_count);

offset=(unsigned int)malloc(sizeof(unsigned int)fields_count);

if(length==NULL||offset==NULL){

fprintf(stderr,"Cannot allocate memory for array length or offset\n");

exit(-1);

}

/ 找到所需字段的偏移量和长度,如果没有相应字段,程序退出 /

for(i=0;i<NFIELDS;i++)

{

for(j=0;j<fields_count;j++)

{

if(strcmp(dbf_fields_name[i],fields[j]field_name)==0)

{

offset[i]=fields[j]offset - 1;

length[i]=fields[j]field_length;

matched=TRUE;

break;

}

if(!matched){

fprintf(stderr,"dbf file structure is invalid, field %s not found\n", dbf_fields_name[i]);

exit(-1);

}

else

matched=FALSE;

}

}

/ 定位文件指针到数据记录的开始位置 /

fseek(fp_dat,(long)file_headhead_len,SEEK_SET);

/ 读取每条记录的字段数据 /

for(counts=0;counts<file_headno_recs;counts++)

{

/ 如果有删除标记,跳到下一条记录 /

if(fgetc(fp_dat)==(int)'\x2a')

{

fseek(fp_dat,(int)file_headrec_len-1,SEEK_CUR);

continue;

}

fread((void)buffer,(int)file_headrec_len-1,1,fp_dat);

buffer[file_headrec_len]='\0';

/去掉全为空格的记录行/

if(strcmp(buffer,allspace)==0)

continue;

}

fclose(fp_dat);

/ 释放开辟的空间 /

free(buffer);

free(allspace);

free(offset);

free(length);

}

你用的什么数据库?

我以mysql为例说下:

1用excel将选中的数据快儿拷贝到一个txt文本文件中(记得把后面的空格消掉。。),假如存到“d:\datatxt”这个位置里。

2根据要导入的数据快儿建立mysql数据库和表,然后进入命令提示符里使用命令

load

data

local

infile

'd:\datatxt'

into

table

exceltomysql

fields

terminated

by

'\t';

进行导入 *** 作(table是你建立的表名字)

如果提示找不到d:\datatxt

你就改成d:\\datatxt

indexedDB删除有影响。不可以。C盘indexedDB是系统盘,里面的Windows是系统所在文件夹,删除里面的文件可能会影响系统的稳定性,所以这个文件夹是绝对不能动的。这是安装了。NET系统框架之后的文件夹,是一个程序集,包含了一个或多个托管模块,以及一些资源文件的逻辑组合。删除之后可能会导致一些应用程序无法运行。

indexDB优点

indexDB大小取决于你的硬盘,可以说是不受限的可以直接存储任何js数据,包括blob其实是支持结构化克隆的数据不像storage只能存放字符串可以创建索引,提供高性能的搜索功能采用事务,保证数据的准确性和一致性。绝对的黑科技,某些棘手的场景只能用它了唯一的缺点就是太复杂了,比storage和cookie都要复杂的多。

一、安装

先查看在系统中存在不

最近简单的办法是在命令行输入 db_load (也可以用rpm)

usage: db_load [-nTV] [-c name=value] [-f file]

      [-h home] [-P password] [-t btree | hash | recno | queue] db_file

usage: db_load -r lsn | fileid [-h home] [-P password] db_file

显示这个说明这个存在

如果显示其他的就没有db_load命令

可能有些db4包,需要安装db4

直接把db4包安装了哈

yum -y install db4

就ok了

二、使用

db_load主要是用来生成db数据库使用的

比如:在Vsftpd的虚拟用户设置 中

先新建一个文件userstxt 把用户名密码放入其中

接着

db_load -T -t hash -f   /userstxt    /usersdb

#星号表示目录

这样就生成了一个usersdb文件(hash码型的数据库文件)

以上就是关于怎样打开.db的数据库文件啊全部的内容,包括:怎样打开.db的数据库文件啊、如何用EXCEL可以完美打开DB数据库文件、indexedDB删除有影响吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10185000.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存