怎么将文本文件导入数据库
本文以单词文件为例说明导入数据库的具体过程,如
步骤:
第一步:先将该文件中单词与解释的分割符换成 “|”,并去掉它们之间的所有空格。
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
int main(int argc, char const *argv[])
{
char buf[512] = {};
int asc;
//创建或打开文件
FILE *fp1 = fopen("dict.txt", "r+");
FILE *fp2 = fopen("dictfuben.txt", "w");
while (1)
{
//主要拷贝单词,和处理单词和解释之间的分界
while (1)
{
//挨个字符读取单词文件中的字符
asc = fgetc(fp1);
//判断是否是空格
//是空格
if (asc == ' ')
{
//将文件指针移到在空格前面,单词的后面
fseek(fp1, -1, SEEK_CUR);
fputc('|', fp2); //写入分隔符
//让文件指针向后移动,直到所有移动到,单词与解释之间所有空格 的后面
while (1)
{
asc = fgetc(fp1);
if (asc != ' ')
break; //删去多余空格
}
break;
}
//结束符
else if (asc == EOF)
break;
//其他字符则将该字符拷贝到123.txt文件中,这里拷贝的是单词
fputc(asc, fp2);
}
fseek(fp1, -1, SEEK_CUR); //此处需要向前移动一个位置,否则会吞掉一个字符
//将解释拷贝到123.txt文件中
while (1)
{
fgets(buf, sizeof(buf), fp1);
fputs(buf, fp2);
if (buf[strlen(buf) - 1] == '\n')
break;
}
//如果读到文件结束符,退出
if (asc == EOF)
break;
}
fclose(fp1);
fclose(fp2);
remove("dict.txt"); //删除原文件
rename("dictfuben.txt", "dict.txt"); //将临时文件名改为原文件名
return 0;
}
处理之后,单词的文本文件
第二步:将文件中所有的双引号( “”)替换成单引号( ‘’),来保证正确插入到数据库表中
使用vi编辑器的底行模式的字符串替换指令来实现。
1)使用vi编辑器打开单词的.txt文件
2)查找单词文件中的双引号(”“) ,来查看是否存在双引号(”“)存在的话则用vi编辑器中字符串替换命令替换
查找:
:/"
3)替换命令
利用vi编辑器中的字符串替换命令,将单词文件中的双引号(”“)替换成单引号(‘’),来保证正常插入
:%s/"/'/g
4)保存并退出
:wq
第三步。在命令行中,创建该数据库,并创建一个空的单词表
1)创建数据库
sqlite3 数据库名.db
sqlite3 dictc.db
2)创建空的单词表
create table 表名(表列名 列数据项的数据类型);
sqlite> create table dict(word char,explain char);
第四步:设置数据库表中的各个列以竖杠(|),分割
sqlite> .separator "|"
第五步:查看是否设置成功
sqlite> .show
出现这种情况,表示设置成功
第六步:将单词文本中的内容导入到我们指定的数据库对应的表中
.import 待导入文本文件名 数据库表名
sqlite> .import dict.txt dict
导入前,数据库该单词表为空
导入后,数据库该单词表中的内容以被文本文件内容填充
导入成功