Access数据导出成文件,然后导入到sql server ( 积分: 200 )

  • 主题发起人 主题发起人 wangfangzhen
  • 开始时间 开始时间
W

wangfangzhen

Unregistered / Unconfirmed
GUEST, unregistred user!
目前需要将Access数据导出成文件,然后导入到sql server,数据量比较大,有什么好的方法没?最好可以实现批量导入
 
你可以自已做一个COPY功能就可以了,为什么一定要导成文件呢??直接导不就可以了吗??导成文件的话导成EXCEL最好,用EXCEL导入SQL是很好做的
 
如果是非编程的话,两都结构相同,ACCESS数据库可以直接用SQL的数据导入功能实现
 
关键是access和sql server不是在一起,所以要导出成文件,然后导入sql server
 
输出到一个临时的access文件,或者输出到excel.这样载入到sql server 的时候可以速度很快。你使用sql语言进行批量载入。
 
你直接把access复制过去,导入就可以了
 
复制过去太大了呀,输出成excel有什么最快的方法没,表结构是一样的
 
不知有多大,找个移动硬盘不就OK了,不然压缩分包,用U盘,COPY下来,直接用SQL的导入,如果能连网,愿意共享COPY,还是直接导,自己定了。
 
Adoquery1.appendrecord()
 
你输出成文本文件吧,载入的时候使用sql载入。<br>给你一段文本文件载入的代码,可以参考一下。载入速度非常快的。<br>&nbsp;&nbsp;&nbsp;&nbsp;temp.Close;<br>&nbsp;&nbsp;&nbsp;&nbsp;temp.SQL.Clear;<br>&nbsp;&nbsp;&nbsp;&nbsp;tsql:=<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'INSERT&nbsp;INTO&nbsp;&nbsp;表1&nbsp;(手机号&nbsp;)&nbsp;'+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;SELECT&nbsp;&nbsp;手机号&nbsp;'+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'&nbsp;FROM&nbsp;[text;database='+ExtractFilePath(strFileName)+'].['+ExtractFileName(strFileName)+']';<br>&nbsp;&nbsp;&nbsp;&nbsp;temp.Parameters.Clear;<br>&nbsp;&nbsp;&nbsp;&nbsp;temp.ParamCheck:=false;<br>&nbsp;&nbsp;&nbsp;&nbsp;temp.SQL.Text:=tsql;<br>&nbsp;&nbsp;&nbsp;&nbsp;temp.Execsql;
 
没有必要从access倒成文件再倒到sql&nbsp;server啊,sql提供access直接导入到sql的功能,可以用dts的试图模式或者命令形式。<br><br>视图方式不在这里说了,直接用dts就可以,下面的语法是命令格式,希望有所帮助。<br>insert&nbsp;into&nbsp;OPENROWSET('Microsoft.Jet.OLEDB.4.0',&nbsp;<br>&nbsp;&nbsp;&nbsp;'E:/DataTransmit/TransDataDB1.mdb';'admin';'',&nbsp;testdata)<br>(userid,synum,grou_table,xmid,curorder,maxload,testdate,testtime)<br><br>select&nbsp;userid,synum,grou_table,xmid,curorder,maxload,testdate,testtime<br>FROM&nbsp;OpenDataSource(&nbsp;'Microsoft.Jet.OLEDB.4.0',<br>&nbsp;&nbsp;'Data&nbsp;Source=&quot;E:/DataTransmit/DataTrans/Data20050929.xls&quot;;User&nbsp;ID=Admin;Password=;Extended&nbsp;properties=Excel&nbsp;5.0')...Data20050929$<br><br>导出之前先将excel文件设置为文本格式,再进行导出<br>insert&nbsp;into<br>OpenDataSource(&nbsp;'Microsoft.Jet.OLEDB.4.0',<br>&nbsp;&nbsp;'Data&nbsp;Source=&quot;E:/DataTransmit/Data20050929.xls&quot;;User&nbsp;ID=Admin;Password=;Extended&nbsp;properties=Excel&nbsp;5.0')...sheet1$<br><br>select&nbsp;*&nbsp;from&nbsp;table&nbsp;where&nbsp;...
 
由excel中轉感覺方便些
 
那你要么在access的机器上装个sql客户端,连到sql机器。然后直接导
 
试下下,access导出成excel,然后导入sql&nbsp;server,比较快,但是有个问题,导入sql&nbsp;server时,导入字段顺序与导出的不是一样的哦,导出的字段顺序是a,b,c&nbsp;,但使用SELECT&nbsp;*&nbsp;<br>FROM&nbsp;OpenDataSource....后,字段顺序会是b,a,c哦
 
ACESS大,通常的原因是因为双复操作而没有进行数据库压缩的缘故,否则的话,哪怕是一百万条的普通记录,应该也不会有多大的。
 
考虑通用性的话,&nbsp;&nbsp;还是先把ACCESS中的部分导出到新的ACCESS文件,然后再导入比较好。<br>因为导出成EXCELL或者文本后,表的结构会改变掉的。假设原ACCESS中字段A的类型是TEXT(5),导出到EXCELL后,变成了文本类型,再导回SQL,变成VARCHAR(255)了,类型不一致了不说,还浪费空间。<br>另一个理由,假设ACCESS里有MEMO字段或者OLE类型字段的话,用EXCELL与文本,又要改程序了,所以一步到位比较好。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
849
SUNSTONE的Delphi笔记
S
S
回复
0
查看
781
SUNSTONE的Delphi笔记
S
后退
顶部