SQLServer表中数据的复制问题
发布网友
发布时间:2022-04-22 22:44
我来回答
共5个回答
懂视网
时间:2022-04-09 09:23
别人给的建议
ETL来处理:
针对这个解决方案,搜索了后才知道微软的SSIS中是支持ETL的(实战1、实战2篇,微软文档篇)。具体需要测试才知道结果。
内存处理:
就是把未能处理的数据放到内存中,使用Redis或者memcached来存储,之后把这样的数据源排队性的存储到sqlsever 2008 R2数据库中,该方案可行性还需要测试,到底需要多大的设备,一个上边同样配置的虚拟机能存储多少条记录会内存满负载,这是该方案是否成立的根本问题,问题是我们需要的是数据量在几百亿量级的数据,这样的情况需要测试才会有结论。
另外,看到SqlServer2014(SQL 2014新功能介绍系列1 – 内存中 OLTP (In-Memory OLTP))也做了比较大的调整,基本上支持内存存储,可以异步快速存储到内存中,该方案以目前设备来说,恐怕行不通。
其他,后来搜索过程中学习到了怎么实现一个复制的,复制的场景的应用模式(实战篇)。
用Oracle来替换SqlServer:
该方案我也早想去这么去做,回去就给公司建议,不过公司一定会PASS的。。。
参考资料:
DBA博客:http://www.cnblogs.com/CareySon/archive/2012/05/08/2489748.html
DBA问题查找经验总结:http://blog.csdn.net/yynetsdk/article/details/6749529
SqlBulkCopy 实现原汁原味复制的注意事项:http://blog.csdn.net/yenange/article/details/35837247
SqlServer批量复制(bcp)[C#SqlBulkCopy]性能极低问题
标签:
热心网友
时间:2022-04-09 06:31
?
我的一段代码看对你是否有用
procere Tf_fsxx.drexcel(filename,drcs,drbz,dxnr:string;ybt:boolean);
var
strcs:Tstringlist;
i,j,k:integer;
ks:array of integer;
zdm,nr:array of string;
str1,str2,tem,sqlstr,keyfield:string;
adoquery:Tadoquery;
mid:integer;
ExcelApp: Variant;
p:^Integer;
begin
with Tadoquery.create(nil) do begin
connectionstring:=linkstr;
sql.clear;
sql.add('delete from xt_temdr');
execsql;
free;
end;
strcs:=Tstringlist.create;
strcs.text:=drcs;
setlength(zdm,strcs.count);
setlength(ks,strcs.count);
setlength(nr,strcs.count);
for i:=0 to strcs.count-1 do begin
tem:=strcs.strings[i];
j:=pos(#9,tem);
str1:=copy(tem,1,j-1);
str2:=copy(tem,j+1,length(tem)-j);
ks[i]:=strtoint(str1);
zdm[i]:=str2;
end;
for i:=0 to high(zdm) do begin
for j:=0 to 4 do begin
if zdm[i]=yqxxarray[j,0] then begin
zdm[i]:=yqxxarray[j,1];
break;
end;
end;
end;
if ybt then k:=1
else k:=0;
ExcelApp:=CreateOleObject( 'Excel.Application' );
ExcelApp.WorkBooks.Open(FileName);
ExcelApp.WorkSheets[1].Activate;
createplan('正在导入数据……',ExcelApp.WorkSheets[1].UsedRange.Rows.Count-k);
for i:=k+1 to ExcelApp.WorkSheets[1].UsedRange.Rows.Count do begin
for j:=0 to high(ks) do begin
nr[j]:=ExcelApp.cells[i,ks[j]];
end;
with Tadoquery.create(nil) do begin
connectionstring:=linkstr;
sql.clear;
sqlstr:='insert into xt_temdr(';
for j:=0 to high(ks) do begin
sqlstr:=sqlstr+zdm[j]+',';
end;
sqlstr:=copy(sqlstr,1,length(sqlstr)-1);
sqlstr:=sqlstr+')values(';
for j:=0 to high(ks) do begin
sqlstr:=sqlstr+''''+nr[j]+''',';
end;
sqlstr:=copy(sqlstr,1,length(sqlstr)-1);
sqlstr:=sqlstr+')';
sql.add(sqlstr);
execsql;
free;
end;
incplan;
end;
excelapp.workbooks.close;
excelapp.quit;
closeplan;
keyfield:='gdzh';
for i:=0 to 4 do begin
if yqxxarray[i,0]=drbz then begin
keyfield:=yqxxarray[i,1];
end;
end;
with Tadoquery.create(nil) do begin
connectionstring:=linkstr;
sql.clear;
sql.add('select * from xt_temdr,khzl where xt_temdr.'+keyfield+'=khzl.'+keyfield);
open;
createplan('正在写入发送库',recordcount);
while not eof do begin
tem:=dxnr;
str1:='';
i:=pos('{*',tem);
j:=pos('*}',tem);
while (i>0)and(j>0) do begin
str1:=str1+copy(tem,1,i-1);
str2:=trim(copy(tem,i+2,j-i-2));
tem:=copy(tem,j+2,length(tem)-j);
k:=0;
for j:=0 to 4 do begin
if yqxxarray[j,0]=str2 then begin
str2:=yqxxarray[j,1];
k:=1;
break;
end;
end;
if (k=0)and(trim(str2)<>'bxhj') then str2:=str2+'_1';
str1:=str1+fieldbyname(str2).asstring;
i:=pos('{*',tem);
j:=pos('*}',tem);
end;
str1:=str1+tem; //内容
adoquery:=Tadoquery.create(nil);
adoquery.connectionstring:=linkstr;
mid:=incid('xt_fs','id');
adoquery.sql.clear;
adoquery.sql.add('insert into xt_fs(id,fs_hm,fs_xm,fs_nr,fs_zt,fs_yxj,fs_yh,fs_drsj,fs_lx)values(');
adoquery.sql.add(inttostr(mid)+','''+fieldbyname('sjhm').asstring+''',');
adoquery.sql.add(''''+fieldbyname('xm_1').asstring+''',');
adoquery.sql.add(''''+str1+''',');
adoquery.sql.add('''未发送'',');
adoquery.sql.add(current_loginqx+',');
adoquery.sql.add(''''+current_loginname+''',');
adoquery.sql.add(''''+datetostr(date)+' '+timetostr(time)+''',');
adoquery.sql.add(inttostr(fslx)+')');
adoquery.execsql;
with lv.Items.add do begin
caption:=fieldbyname('xm_1').asstring;
subitems.add(fieldbyname('sjhm').asstring);
subitems.add('未发送');
subitems.add(str1);
subitems.add(datetostr(date)+' '+timetostr(time));
subitems.add('');
subitems.add('');
subitems.add(current_loginqx);
subitems.add(current_loginname);
new(p);
p^:=mid;
data:=p;
selected:=true;
makevisible(true);
end;
adoquery.free;
update;
incplan;
next;
end;
closeplan;
free;
end;
strcs.free;
end;
热心网友
时间:2022-04-09 07:49
打开数据库,右击“表”,选择“导出数据”,选好源数据库和目的数据库后,有两项可供选择,“从源数据库复制表和视图”,“用一条查询指定要传输的数据”,用这两项都可以,用第一项的时候,选择好要复制的表后,点“转换”按钮,选择自己想要的转换方式。
热心网友
时间:2022-04-09 09:40
使用insert into db2.dbo.tab2select * from db1.dbo.tab1
参考资料:httP;//www.tiantiansoft.com
热心网友
时间:2022-04-09 11:48
导入导出时选择复制数据库对象