帮忙看下这个程序~解决办法
帮忙看下这个程序~
D:\ymd 下有一些TXT文件,文件内容格式大约是:
aaa 1111
bbb 1221
...
我要把他们写到一个SQL的表中,表名是ymd
我已经建立了ADOConnction和ADOqurey,测试连接成功
现在数据写进不去,大家帮我看下,帮我改改!
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TADOQuery *q=new TADOQuery(this);
TSearchRec f;
TStringList *list1=new TStringList();
TStringList *list2=new TStringList();
q-> Close();
q-> Connection=ADOConnection1;
q-> SQL-> Text= "select * from ymd ";
q-> Open();
int id=FindFirst( "D:\\ymd\\ "+ "*.* ",faArchive,f);//这步语法有问题,怎么改呢?
while(!id)
{
list1-> LoadFromFile(f.Name);
for(int i=0;i <list1-> Count;i++)
{
q-> Append();
AnsiString s=list1-> Strings[i];
s=AnsiReplaceStr(s, ", ", "\n\r "); //能否起到按空格将数据分开的作用?
list2-> DelimitedText=s;
//插入SQL表:
q-> FieldByName( "stationnum ")-> AsString=list2-> Strings[0];
q-> FieldByName( "rain ")-> AsString=list2-> Strings[1];
q-> FieldByName( "observtimes ")-> AsDateTime=200705;
q-> FieldByName( "inserttimes ")-> AsDateTime=Now();
q-> Post();
}
id=FindNext(f);
list1-> Clear();
}
FindClose(f);
delete list2;
delete list1;
}
------解决方案--------------------
固定格式的文本导入SQL不用这么麻烦的
直接用sqlserver自带的bcp工具,而且速度飞快
在查询分析器里输入:
EXEC master..xp_cmdshell 'bcp "tempdb..SMP_TempUpTable " in d:\upinfo\mdn.txt -c -t\t -Usa -P -S127.0.0.1 '
注释:
tempdb..SMP_TempUpTable 是库名+表名格式
d:\upinfo\mdn.txt 是你的需要导入的文件
\t表示文件里面字段的分隔符是制表符,你可以可以用逗号分号什么的,那就把t\t替换成t,
-Usa s是用户名
-P 这里加密码,因为是空密码所以什么都没有
-S 加要连的数据库ip
D:\ymd 下有一些TXT文件,文件内容格式大约是:
aaa 1111
bbb 1221
...
我要把他们写到一个SQL的表中,表名是ymd
我已经建立了ADOConnction和ADOqurey,测试连接成功
现在数据写进不去,大家帮我看下,帮我改改!
void __fastcall TForm1::FormCreate(TObject *Sender)
{
TADOQuery *q=new TADOQuery(this);
TSearchRec f;
TStringList *list1=new TStringList();
TStringList *list2=new TStringList();
q-> Close();
q-> Connection=ADOConnection1;
q-> SQL-> Text= "select * from ymd ";
q-> Open();
int id=FindFirst( "D:\\ymd\\ "+ "*.* ",faArchive,f);//这步语法有问题,怎么改呢?
while(!id)
{
list1-> LoadFromFile(f.Name);
for(int i=0;i <list1-> Count;i++)
{
q-> Append();
AnsiString s=list1-> Strings[i];
s=AnsiReplaceStr(s, ", ", "\n\r "); //能否起到按空格将数据分开的作用?
list2-> DelimitedText=s;
//插入SQL表:
q-> FieldByName( "stationnum ")-> AsString=list2-> Strings[0];
q-> FieldByName( "rain ")-> AsString=list2-> Strings[1];
q-> FieldByName( "observtimes ")-> AsDateTime=200705;
q-> FieldByName( "inserttimes ")-> AsDateTime=Now();
q-> Post();
}
id=FindNext(f);
list1-> Clear();
}
FindClose(f);
delete list2;
delete list1;
}
------解决方案--------------------
固定格式的文本导入SQL不用这么麻烦的
直接用sqlserver自带的bcp工具,而且速度飞快
在查询分析器里输入:
EXEC master..xp_cmdshell 'bcp "tempdb..SMP_TempUpTable " in d:\upinfo\mdn.txt -c -t\t -Usa -P -S127.0.0.1 '
注释:
tempdb..SMP_TempUpTable 是库名+表名格式
d:\upinfo\mdn.txt 是你的需要导入的文件
\t表示文件里面字段的分隔符是制表符,你可以可以用逗号分号什么的,那就把t\t替换成t,
-Usa s是用户名
-P 这里加密码,因为是空密码所以什么都没有
-S 加要连的数据库ip