读书人

txt转入 sql的有关问题

发布时间: 2012-02-02 23:57:14 作者: rapoo

txt转入 sql的问题
各位大侠,我遇到一个问题,我把要记录的数据写入了文件,想把数据转入SQL,从没接触过这方面程序,所以请大家能否给点例程让我学习一下,我写入文件的数据都是很规律的,一行就是一条记录,例如:
2008-1-20 12:25:20 ×(-32756)×(-3257)×(-3256)×(-32579)×(-32596)×(-3296)×(-3266)
2008-1-20 12:25:21 ×(-32756)×(-3257)×(-3256)×(-32579)×(-32596)×(-3296)×(-3266)
..................................................................................
..................................................................................
下面都是类似的,总之一行一条记录,别且中间的分隔符现在用的是×,可以改的。
如果哪位大侠知道,还请不吝赐教,最好有例子,感激。。。谢谢

[解决办法]
用ADO,把文本当做数据库处理:
连接字符串这样写:
m_pConn->Open(L"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\\;Extended Properties=\"text;HDR=Yes;FMT=Delimited\"",L"",L"",adOpenUnspecified);
如果你想让第一行做列名的话,HDR=Yes,否则=No(这种情况下默认字段名为F1类推。。)
FMT=Delimited表示读取方式是按列分格符方式

查询语句这样写:
m_pRs->Open("select * from test.txt",_variant_t((IDispatch*)m_pConn,true),
adOpenDynamic,adLockOptimistic,adCmdUnknown);

另外,在文本同目录下建立文件:Schema.ini(名字不能改!!)内容如下:

BatchFile code
[orders.txt]Format=Delimited(;)ColNameHeader=TrueMaxScanRows=0CharacterSet=ANSI
[解决办法]
http://blog.csdn.net/tdskee/archive/2008/01/20/2055049.aspx
可以去看看这篇文章所说的方法
我就是那么做的
可以实现将txt数据导到sqlserve中
try下
很简单的..
[解决办法]
转成access的我写过
sql.Format("SELECT * INTO lib8 FROM [text;database=%s].tmp.txt ",dir);
m_pConn->Execute((_bstr_t)sql,0,adCmdText+adExecuteNoRecords);
把tmp.txt转成access中的lib8表
同时需要schema.ini文件

sql的也可以在网上搜一下

一定需要写代码转吗?直接用sqlserver的工具不行??或者先转成access在转成sql

[解决办法]
文件大小应该只手硬盘限制

没有专门完整的例子
其实只有几句话和一个schema.ini文件
[解决办法]
用bcp导!

或者
我刚写完自己用的delphi程序 给你代码吧 你自己研究下 我也是新手 程序还有个问题:最后一条记录读不出。你有解决办法教教我吧! :)
文本记录:
021704080001 20031101 1F9133024644950C
021205080002 20031101 1F9233024644950C
021205080003 20031101 1F9333024644950C
021205080004 20031101 1F9433024644950C
021205080005 20031101 1F9533024644950C
021703080006 20031101 1F9633024644950C
021703080007 20031101 1F9733024644950C
121703080006 20031101 1F9633024644950C
221703080007 20031101 1F9733024644950C


procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
TxtFile:TextFile; //定义文本变量
ch:Char;
begin
with adoquery1 do //打开数据库
adoquery1.Close;
adoquery1.SQL.Add('select * from jzgdzcxx');
adoquery1.open;
assignfile (txtfile,'d:/1.txt'); //将文本分配给变量
reset(txtfile); //打开文本变量
str:='';
if checkbox1.Checked = true then
with adoquery1 do
adoquery1.sql.add('delete from jzgdzcxx');
adoquery1.ExecSQL;
while not eof(txtfile) do //只要文本没有结束 就循环转换
begin
read (txtfile,ch); //从文本读第一个字符
if ch<>char(13) then //判断是否为回车
str:=str+ch //不是回车 继续读下一个
else
begin
table1.Active:=true; //是回车 表明读完一行 此时str为一行记录
table1.Append;
table1.Edit;
table1.fieldbyname('编号').AsString:=copy(str,1,12);
table1.FieldByName('日期').AsString:=copy(str,14,4)+'/'+copy(str,18,2)+'/'+copy(str,20,2);
table1.FieldByName('数据').AsString:=copy(str,23,16);
table1.Post;
read (txtfile,ch);
str:='';
next;
end;
end;


showmessage('导入成功!');
exit;
end;

读书人网 >VC/MFC

热点推荐