1任意新建或找一个Access数据库文件datamdb,这里我新建了一个datamdb,这里有两个表User和Class。表结构如下图
2任意新建一个testaspx测试页面,复制下面的内容:
protected void Page_Load(object sender, EventArgs e)
{
// access连接字符串可以把路径当做变量
string sConnStr = @"Provider=MicrosoftJetOLEDB40;Data Source=C:\Users\Administrator\Desktop\WebApplication2\WebApplication2\TempFile\datamdb;Persist Security Info=False";
// 数据源连接对象
OleDbConnection con = new OleDbConnection(sConnStr);
conOpen();
DataTable dt = conGetOleDbSchemaTable(OleDbSchemaGuidTables, new object[] { null, null, null, "TABLE" });
conClose();
conDispose();
// 遍历所有的表
string sName = "";
for (int i = 0, maxI = dtRowsCount; i < maxI; i++)
{
// 获取第i个Access数据库中的表名
string sTempTableName = dtRows[i]["TABLE_NAME"]ToString();
sName += stringFormat("{0}\n", sTempTableName);
}
ResponseWrite(sName);
}
3浏览页面,页面中会输出表的名称,如下图,不过从输出的表名称可以看出,以~开头的表名,都不是真正的表,因此需要过滤掉这些表。
4Access数据库文件的路径,可以当做一个变量,如果是处理客户端上传的文件,可以先保存到服务器上,然后获取Access数据库连接字符串。
5获取到了表名称,可以使用select from tableName,查出来DataTable数据,最后把Access数据库中所有表名和表数据添加到DataSet对象中。
读取文本文件中的字符串,可以使用 TStrings 及其派生的类(如 TStringList 等):
procedure TForm1Button1Click(Sender: TObject);var txt: TStringList;
begin
//读取文本文件中的数据
txt := TStringListCreate;
txtLoadFromFile('e:\testtxt');
//字段赋值,将数据写入数据库
ADOTable1Append;
ADOTable1FieldByName('字段名')AsString := txtText;
ADOTable1Post;
txtFree;
end;
可以,你可以学习XML数据库方面的技术。
XML可以写入到txt,也可以从txt读取数据。
也可以自己设计数据库,分析字符串来实现保存和读取
我做的数据库DataTable写入到TXT代码(不过是VBnet的):
#Region "◇ 写入表格 (共享)"''' <summary>
''' 将表格数据写入到指定流
''' </summary>
''' <remarks></remarks>
Public Shared Function 写入表格(ByRef 表格 As 表格, ByRef 数据写入 As StreamWriter) As Boolean
数据写入WriteLine()
'写入表格注释
写入注释(表格注释, 数据写入)
'写入打开命令
写入打开命令(表格类型, 表格名称, 数据写入)
'写入字段列表
Dim t字段 As 字段
For i As Integer = 1 To 表格字段数
t字段 = 表格字段(i)
'写入字段注释
写入注释(t字段注释, 数据写入)
'写入字段数据
数据写入Write(H属性符 & " 添加字段" & H参数符)
数据写入Write(t字段名称 & H隔位符 & t字段类型 & H隔位符 & t字段初值)
If t字段引用 <> "" Then 数据写入Write(H隔位符 & t字段引用)
'写入主键字段
If 表格主键 IsNot Nothing Then
数据写入Write(H属性符 & " 设置主键" & H参数符)
数据写入Write(表格主键名称)
End If
数据写入WriteLine()
Next
'写入记录
For j As Integer = 1 To 表格记录数
'写入记录注释
写入注释(表格记录注释(j), 数据写入)
'写入记录数据
数据写入Write(H添加符 & " ")
For i As Integer = 1 To 表格字段数
Dim t数据 As String = 表格数据(i, j)
t数据 = Replace(t数据, H隔位符, H隔位符替换)
t数据 = Replace(t数据, H参数符, H参数符替换)
数据写入Write(t数据)
If i <> 表格字段数 Then 数据写入Write(H隔位符)
Next
数据写入WriteLine()
Next
'写入关闭命令
写入关闭命令(表格类型, 表格名称, 数据写入)
Return True
End Function
#End Region
,谢谢。
php数据写入文本文件的具体 *** 作步骤如下:
1、使用touch命令建立一个aphp的文件。
2、用vim打开aphp,输入相关内容。
3、使用touch命令建立一个bphp的文件。
4、用vim打开bphp,输入相关内容。把表单提交的数据写入到1txt文件中。
5、使用touch命令建立1txt。
6、使用chmod命令将其权限设置为777。
7、打开浏览器输入localhost/aphp,看到aphp的表单了,输入相应的数据,点击提交即可。
8、提交成功后,查看一下1txt的数据,已经写入到1txt了文本文件。
大型的数据库开发中常常遇到数据源是平面文件(如文本文件)的情况,对于这样的数据源,无法使用数据库对其数据进行有效的管理,另外也无法使用SQL语句对其进行查询和 *** 作,所以当务之急就是将这些平面文件导入到数据库中,然后就可以对其进行高效的 *** 作了。
下面介绍几种常见的数据导入的方法,希望能够给大家启迪。另外,本文所涉及到的数据库均为ORACLE数据库,其实对于其他数据库而言,方法类似。
一、Sql:Loader
该方法是Oracle数据库下数据导入的最重要的方法之一,该工具由Oracle客户端提供,
其基本工作原理是:首先要针对数据源文件制作一个控制文件,控制文件是用来解释如何对源文件进行解析,其中需要包含源文件的数据格式、目标数据库的字段等信息,一个典型的控制文件为如下形式:
LOAD DATA
INFILE '/ora9i/fengjie/agent/data/ipaagentdetail200410txt'
TRUNCATE (也可以用append替换TRUNCATE)
INTO TABLE fj_ipa_agentdetail
fields terminated ","
trailing nullcols
( AGENT_NO char,
AGENT_NAME char,
AGENT_ADDRESS char,
AGENT_LINKNUM char,
AGENT_LINKMAN char
)
其中,INFILE '/ora9i/fengjie/agent/data/ipaagentdetail200410txt'指明所要导入的源文件,其实源文件也可以直接通过命令行来输入获得 ,fj_ipa_agentdetail为目标表的名字,fields terminated ","是指源文件的各个字段是以逗号分隔,trailing nullcols表示遇到空字段依然写入到数据库表中,最后这5个字段是目标数据库表的字段结构。通过上面这个典型的控制文件的格式分析可知,控制文件需要与源文件的格式信息一致,否则导入数据会出现异常。
除了控制以外,sqlloader的还需要数据文件,即源文件。根据格式的不同,源文件可以分为固定字段长度和有分隔符这两大类,这里将分别说明这两种情况:
固定字段长度的文本文件
就是每个字段拥有固定的字段长度,比如:
602530005922 1012
602538023138 1012
602536920355 1012
602531777166 1012
602533626494 1012
602535700601 1012
有分隔符的文本文件
就是每个字段都有相同的分隔符分隔,比如:
1001,上海长途电信综合开发公司,南京东路34号140室
1002,上海桦奇通讯科技有限公司,武宁路19号1902室
1003,上海邦正科技发展有限公司,南京东路61号903室
对于上述两种文件格式sqlloader均可以做处理,下面就前面那个固定长度的文本来举例说明:
由于该文本只有两个字段,一个为设备号,一个是区局编号,两者的长度分别为20和5,那么可以编制控制文件如下:
LOAD DATA
INFILE '/ora9i/fengjie/agent/data/ipaagent200410txt'
TRUNCATE
INTO TABLE fj_ipa_agent
( DEVNO POSITION(1:20) CHAR,
BRANCH_NO POSITION(21:25) CHAR
)
其中,'/ora9i/fengjie/agent/data/ipaagent200410txt'为该文件的完全路径,POSITION(M:N)表示该字段是从位置M到位置N。
对于有分隔符的数据文件,前面已经有一个例子,这里就不再赘述了。总之,使用SqlLoader能够轻松将数据文件导入到数据库中,这种方法也是最常用的方法。
二、 使用专业的数据抽取工具
目前在数据仓库领域中,数据抽取与装载(ETL)是一重要的技术,这一技术对于一些大的数据文件或者文件数量较多尤其适合。这里简单介绍目前一款主流的数据抽取工具 ――Informatica。
该工具主要采用图形界面进行编程,其主要工作流程是:首先将源数据文件的结构(格式)导入为Informatica里,然后根据业务规则对该结构进行一定的转换(transformation),最终导入到目标表中。
以上过程仅仅只是做了一个从源到目标的映射,数据的实际抽取与装载需要在工作流(workflow)里进行。
使用专业的数据抽取工具,可以结合业务逻辑对多个源数据进行join,union,insect等 *** 作,适合于大型数据库和数据仓库。
三、 使用Access工具导入
可以直接在Access里选择‘打开‘文本文件,这样按照向导来导入一个文本文件到Access数据库中,然后使用编程的方法将其导入到最终的目标数据 库中。
这种方法虽然烦琐,但是其对系统的软件配置要求相对较低,所以也是有一定的使用范围
有一段人事档案资料archive txt 内容如下 小许 男 工程师 小吴 女 助理工程师 小蔡 男 助理工程师 小牟 女 工程师
要将它转入数据库archive dbf中 archive dbf结构如下 姓名 性别 年龄 职称
怎么办呢?现在通过使用delphi编程 很好地解决了这个难题 Delphi提供了许多功能强大 丰富的字符处理函数和过程 常用的有 ( )function Length(S String) Integer//返回串的长度 ( )function Copy(S String;Index Count Integer) String//给出一个字符串中串的拷贝 ( )function Pos(Substr String;S String);Integer//查找子串在字符串中的位置 ( )Procedure Delete(VarS String;Index Count Integer);//从一个字符串中去除子串
利用Delphi提供的已有函数和过程基础上编制自己的三个函数 实现了纯文本格式资料转入数据库功能 只要Delphi支持的数据库都可以支持
archive txt中每行数据为一个字符串 字符串中每个被分割的数据为一个字段 分割每个字段的字符为分割符 这里是空格 也可以是 ; #等符号 具体思想是 先将字符串进行调整 然后把串中每个字符同分割符比较 将不是分割符的字符追加到MyStr串中 最后得到一个字段的内容 通过一个循环 就可以将一个字符串分成几个字段
Function Regulate(aString Sepchar string) string //去掉多余的分割符 规范字符串 Function GetSubStr(varsString string;SepChar String) String;//得到字符串中一个子串 因要改变参数aString的值 所以将它用var定义 FunctionGetSubStrNum(aString SepChar String) Integer;//计算一个字符串要被分割成几个字段 参数 aString是所需分割的一个字符串 SepChar是分割符
Function RegulateStr(aString String;Sepchar String) String; var i Num Integer; Flag Boolean; MyStr TempStr String; begin Flag:=False;//进行标志 去除多余的分割符 Num:=Length(aString);//计算aString串的长度 for i:= to Num do begin TempStr:=Copy(aString i );//取aString串中的一字符 if TempStr <> SepChar then begin MyStr:=MyStr+TempStr; Flag:=True; end else if(Flag = True)then begin Mystr:=Mystr+TempSrt; Flag:=False; end; end; if MyStr[Length(MyStr)] <> SepChar then MyStr:=MyStr+SepChar; RegulateSrt:=MyStr; end;
Function GetSubStr(var aString String SepChar Strign) String; var Mysrt String; StrLen Integer; SepCharPso Integer; begin StrLen:=Length(aString); SepCharPos:=Pos(SepChar aString);//计算分割符在子串中的位置 MyStr:=Copy(aString SepCharPos- ); //将分割符前所有字符放到mystr串中 Delete(aString SepCharPos);//除去分割符和分割符前的子串 GetSubStr:=MyStr;//返回一个字段 end;
FunctionTforml GetSubStrNum(aString String;SepChar String) Integer; var i Integer; StrLen Integer; Num Integer; begin StrLen:=Length(aString); Num:= ; for i:= to StrLen do if Copy(aString i ) = SepCharthen Num:=Num+ ; GetSubSrtNum:=Num; end;
有了上面三个函数 现在介绍一下具体的应用 首先建立一个窗体Forml 加入一个RichEditl(或Menol) 一个按钮Buttonl和一个Tablel 设置Tablel的属性 Tablell DataBase = c:\Archivs Tablell TableName = Archive dbf
分别加入以下程序 Const Space= ProcedureTForml FormCreate(Sender Tobject); begin RichRditl Lines LoadFromFile( Archive txt ); end;
lishixinzhi/Article/program/Delphi/201311/25055
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)