这样一定可以: ADOQ.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;Data Source=dBASE Files;Initial Catalog=c:\'; with ADOQ do begin Close; SQL.Clear; SQL.Add('select * into 12.dbf from tablename IN [ODBC][ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=sql123;DataBase=oiw;]'); ExecSQL; Close; end;
TO: proudprince(陌生人) 非常感谢你的解答,导出数据已经解决了,但是导入数据的时候出现问题,请麻烦解答,谢谢,马上就给你分了,不解答也给你得分的,只望你帮忙。谢谢了 SELECT * into SQL_TableName FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\";User ID=Admin;Password=;Extended properties=dBase 5.0')...DBF_TableName服务器: 消息 7314,级别 16,状态 1,行 1 OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 不包含表 'DBF_TableName'。该表可能不存在,或当前用户没有使用该表的权限。
是不是要同一台机器上?如果不是改怎么办? 我现在得数据库在服务器上,而那个文件也在数据库上,远程执行(在客户端使用工具:查询分析器执行出现了 OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。 [OLE/DB provider returned message: Microsoft Jet 数据库引擎找不到对象'DerateMoney'。请确定对象是否存在,并正确地写出它的名称和路径。] ,请问为什么,谢谢
抱歉现在才来这个语句是要求DBF文件在SQL服务器上的。 SELECT * into SQL_TableName FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\";User ID=Admin;Password=;Extended properties=dBase 5.0')...DBF_TableName 如果不在服务器上,大概只能用BATCHMOVE来做了,很快的。 但其实如果只用一个SQL语句,不管是导入还是导出,效果都不太好,字段类型会转换的不一致,比如整数型会可能变成FLOAT,还有就是如果导出到DBF,如果用户表有两个字段的前8位字符一样,用这样的语句导出就会报错。 所以我导入导出现在都用BATCHMOVE了。 拙见,仅供参考。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1691966
ADOQ.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;Data Source=dBASE Files;Initial Catalog=c:\';
with ADOQ do
begin
Close;
SQL.Clear;
SQL.Add('select * into 12.dbf from tablename IN [ODBC][ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=sql123;DataBase=oiw;]');
ExecSQL;
Close;
end;
非常感谢你的解答,导出数据已经解决了,但是导入数据的时候出现问题,请麻烦解答,谢谢,马上就给你分了,不解答也给你得分的,只望你帮忙。谢谢了
SELECT * into
SQL_TableName
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\";User ID=Admin;Password=;Extended properties=dBase 5.0')...DBF_TableName服务器: 消息 7314,级别 16,状态 1,行 1
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 不包含表 'DBF_TableName'。该表可能不存在,或当前用户没有使用该表的权限。
我现在得数据库在服务器上,而那个文件也在数据库上,远程执行(在客户端使用工具:查询分析器执行出现了
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。
[OLE/DB provider returned message: Microsoft Jet 数据库引擎找不到对象'DerateMoney'。请确定对象是否存在,并正确地写出它的名称和路径。]
,请问为什么,谢谢
SELECT * into
SQL_TableName
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\";User ID=Admin;Password=;Extended properties=dBase 5.0')...DBF_TableName
如果不在服务器上,大概只能用BATCHMOVE来做了,很快的。
但其实如果只用一个SQL语句,不管是导入还是导出,效果都不太好,字段类型会转换的不一致,比如整数型会可能变成FLOAT,还有就是如果导出到DBF,如果用户表有两个字段的前8位字符一样,用这样的语句导出就会报错。
所以我导入导出现在都用BATCHMOVE了。
拙见,仅供参考。