2006/06/06 | 搜索的资料
类别(数据库学习笔记) | 评论(0) | 阅读(686) | 发表于 11:46
导出SQL Server表到DBF文件的存储过程
CREATE proc exportToDBF
@tbname sysname, --要导出的表名
@path nvarchar(1000), --文件存放目录
@fname nvarchar(250)='', --导出的文件名,默认为表名
@over bit=0 --是否覆盖已经存在的文件,如果不覆盖,则直接追加
as
declare @err int,@src nvarchar(255),@desc nvarchar(255),@out int
declare @obj int,@constr nvarchar(1000),@sql varchar(8000),@fdlist varchar(8000)
declare @lastsql varchar(255)

--参数检测
if isnull(@fname,'')='' set @fname=@tbname+'.dbf'

--文件路径和文件名
if right(@path,1)<>'\' set @path=@path+'\'
create table #tb(a bit,b bit,c bit)
set @sql=@path+@fname

--判断dbf文件是否存在,如果存在返回结果a=1,b=0,c=1
insert into #tb exec master..xp_fileexist @sql
if exists(select 1 from #tb where a=1)
if @over=1
begin
set @sql='del '+@sql
exec master..xp_cmdshell @sql,no_output
end
else
set @over=0
else
set @over=1

--数据库创建语句
set @sql=@path+@fname
set @constr='Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties="dBASE 5.0;'+';HDR=yes;DATABASE='+@path+'"'

--连接数据库
exec @err=sp_oacreate 'adodb.connection',@obj out
if @err<>0 goto lberr

--打开数据库
exec @err=sp_oamethod @obj,'open',null,@constr
if @err<>0 goto lberr

select @sql='',@fdlist=''

select @fdlist=@fdlist+','+a.name,@sql=@sql+',['+a.name+'] '
+case when b.name in('char','nchar','varchar','nvarchar') then
'text('+cast(case when a.length>250 then 250 else a.length end as varchar)+')'
when b.name in('tynyint','int','bigint','tinyint') then 'int'
when b.name in('smalldatetime','datetime') then 'datetime'
when b.name in('money','smallmoney') then 'money'
else b.name end
FROM syscolumns a left join systypes b on a.xtype=b.xusertype
where b.name not in('image','text','uniqueidentifier','sql_variant','ntext','varbinary','binary','timestamp')
and object_id(@tbname)=id

--建一个dbf表
select @sql='create table ['+@fname
+']('+substring(@sql,2,8000)+')'
,@fdlist=substring(@fdlist,2,8000)

if @over=1
begin
exec @err=sp_oamethod @obj,'execute',@out out,@sql
if @err<>0 goto lberr
end
exec @err=sp_oadestroy @obj

--导出数据到表中
set @sql="openrowset('MICROSOFT.JET.OLEDB.4.0','dBase 5.0;DATABASE="
+ @path+"','select * from ["+ @fname+"]')"

set @lastsql='insert into '+@sql+' select * from '+@tbname
exec(@lastsql)

--删除临时表
drop table #tb

return

--select * from heat

lberr:
exec sp_oageterrorinfo 0,@src out,@desc out
-- raiserror ('asdfasdf',16,1)
lbexit:
select cast(@err as varbinary(4)) as 错误号
,@src as 错误源,@desc as 错误描述
select @sql,@constr,@fdlist






小弟最近要将DBF导入到数据库中,找了个SQL语句

insert into openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\',
'select * from [aa.DBF]')
select * from MYDATABASE.DBO.HtTable

执行时抱错:

服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 'MSDASQL' 报错。提供程序报告了意外的灾难性错误。
[OLE/DB provider returned message: 不能更新查询,因为 FROM 子句不是单一的简单表名。]
OLE DB 错误跟踪[OLE/DB Provider 'MSDASQL' IRowsetChange::InsertRow returned 0x8000ffff: 提供程序报告了意外的灾难性错误。]。

哪位高手帮着看看啊…………………… >_<!!!!!


--------------------------------------------------------------------------------
你还是使用企业管理器中的DTS进行导入导出比较方便

--------------------------------------------------------------------------------
按步操作就行
--------------------------------------------------------------------------------
--/* FoxPro 数据库
select * from openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\',
'select * from [aa.DBF]')
--*/

/**************导入DBF文件****************/
select * from openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;
SourceDB=e:\VFP98\data;
SourceType=DBF',
'select * from customer where country != "USA" order by country')
go
/***************** 导出到DBF ***************/
如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句

insert into openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\',
'select * from [aa.DBF]')
select * from 表

说明:
SourceDB=c:\ 指定foxpro表所在的文件夹
aa.DBF 指定foxpro表的文件名.


--------------------------------------------------------------------------------

/**************导入DBF文件****************/
select * from openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;
SourceDB=e:\VFP98\data;
SourceType=DBF',
'select * from customer where country != "USA" order by country')
go
/***************** 导出到DBF ***************/
如果要导出数据到已经生成结构(即现存的)FOXPRO表中,可以直接用下面的SQL语句

insert into openrowset('MSDASQL',
'Driver=Microsoft Visual FoxPro Driver;SourceType=DBF;SourceDB=c:\',
'select * from [aa.DBF]')
select * from 表

说明:
SourceDB=c:\ 指定foxpro表所在的文件夹
aa.DBF 指定foxpro表的文件名.


以文本方式查看主题

- 我的帮助论坛(主要探讨 VFP 及其它编程技术) (http://www.gz9f.com/bbs/index.asp)
-- DELPHI 论坛 (http://www.gz9f.com/bbs/list.asp?boardid=5)
---- 送给大家的礼物大家接受吧 (http://www.gz9f.com/bbs/dispbbs.asp?boardid=5&id=209052)

--------------------------------------------------------------------------------

-- 作者:99441dud
-- 发布时间:2003-5-23 20:07:27

-- 送给大家的礼物大家接受吧
异构数据库之间完全可以用SQL语句导数据



--------------------------------------------------------------------------------

支持我们

--------------------------------------------------------------------------------

大富翁论坛版权所有
问题:异构数据库之间完全可以用SQL语句导数据。大家抛弃BatchMove吧 如果觉得好请Up一下,如果觉得不好也请Up一下 ( 积分:1, 回复:120, 阅读:1924 )
分类:数据库-C/S型 ( 版主:千中元, luyear )
来自:碧血剑, 时间:2003-3-18 16:33:00, ID:1691966 [显示:小字体 | 大字体]
告诉你一个最快的方法,用SQLServer连接DBF
在SQLServer中执行
SELECT * into bmk
FROM OpenDataSource( \'Microsoft.Jet.OLEDB.4.0\',
\'Data Source="e:\\share";User ID=Admin;Password=;Extended properties=dBase 5.0\')...bmk
这样就可以把e:\\share中的bmk.dbf表导入到Sqlserver中,
速度是最快的
把压箱底的方法都告诉大家
在Form上放一个ADOConnection,连结指向目标Access库
比如txt文件在c:\\temp\\aaaa.txt
就执行
ADOConnection.Connected := True;
ADOConnection.Execute(\'Select * Into abcd From [Text;Database=c:\\temp].aaaa.txt\');
就一切Ok了,这个方法一定行的,我好不容易才研究出来的
有了这两个例子,异构数据库之间导数据的问题就举一反三,迎刃而解了。

把Excel导入到Access中,同txt类似
select * into <table name> from [excel 8.0;database=<filename>].[<sheetname>$ ]



对于VFP6.0,那就要换Extended properties属性了
理论上只要是ODBC能实现连结的数据库的,都可以的
当然不是所有的数据库了:)


来自:txm, 时间:2003-3-19 18:19:00, ID:1695396
好!早几天看到就好多了[:D]
不过现在也不迟的[^]
谢谢!!!


来自:dhl2001, 时间:2003-3-19 18:22:00, ID:1695403
第二个方法很棒,



来自:litong, 时间:2003-3-19 18:22:00, ID:1695404
good


来自:风姿, 时间:2003-3-19 18:30:00, ID:1695420
hao .佩服。


来自:coolfun, 时间:2003-3-19 18:45:00, ID:1695443
真的很佩服你啊。前几天还寻找这样的方法都没找到。昨天只能自己用循环搞定了,不过
也不晚啊,马上换代码,哈哈。


来自:coolfun, 时间:2003-3-19 18:48:00, ID:1695448
不过还想问一下,怎么用SQL语句把ACCESS表导出TXT文件中?


来自:sky0061, 时间:2003-3-19 21:43:00, ID:1695757
试试先,如果可能就太棒了。
不管怎么样,谢谢楼主先,这是个好经验。


来自:斗士, 时间:2003-3-20 0:45:00, ID:1695961
速度还可以,28858行数据花费46秒;
不过这行SQL是否可以在程序中运行,SQL.Add(),ExecSQL;
另如何把SQL Server的表导出到Access、Text、Dbf。


来自:碧血剑, 时间:2003-3-20 8:08:00, ID:1696027
to :coolfun
ADOConnection.Execute(\'Select * Into [Text;Database=c:\\temp].aaaa.txt From aaaa\');
to: :斗士
当然可以在程序中运行
SQL Server表导出和txt导入一个道理
基本上都是用Jet4.0 和 ODBC连结实现
先用用Jet4.0连结dbf,access,txt然后利用SQL语句导出导入
在此我就不详细说了,一句话,都可以的
列出连结串属性Extended properties,
DBase 5.0
DBASE IV
FoxPro 3.0
Paradox 7.X
Excel 8.0
text;HDR=YES;FMT=Delimited



来自:chshanghai, 时间:2003-3-20 8:49:00, ID:1696146
to 楼主;
我以前用过openquery 这个过程. 感觉与openquery 差不多.
想问一下 opendatasource 与 openquery 有什么区别? 谢谢.

还有 opendatasource 是哪里的. 好像我在帮助里没有找到.



来自:碧血剑, 时间:2003-3-20 8:54:00, ID:1696169
to
openquery 需要先建立链接服务器
openrowset和opendatasource不用,在SQLServer联机帮助都可以查到


来自:ninsen, 时间:2003-3-20 10:14:00, ID:1696505
TO 碧血剑
仁兄果然是高手,不但技术好而且还乐意和别人分享知识,我最佩服这种人。请问仁兄
有OICQ吗?可否让小弟加你为好友,遇到问题也可以请仁兄请教。
可能小弟头脑比较笨,按照你的方法研究了很久也没能研究出怎么样把Excel工作表导
出为mdb或sql数据库,请仁兄指教,不胜感激。


来自:碧血剑, 时间:2003-3-20 10:24:00, ID:1696544
我刚才试验成功的
Excel联接ADO串
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\temp\\a.xls;Extended
Properties="Excel 8.0;HDR=Yes;";Persist Security Info=False

SQLServer从Excel取数
SELECT *
FROM OpenDataSource(\'Microsoft.Jet.OLEDB.4.0\',\'Data Source="C:\\temp\\b.xls";Extended Properties="Excel 5.0;HDR=Yes;";Persist Security Info=False\')...sheet1$

我的QQ号连我都不记得,不经常用
Email: jl1999@163.net



来自:coolfun, 时间:2003-3-20 11:29:00, ID:1696833
TO 碧血剑:
高手就是高手,哈哈。而且你愿意把技术与大家分享,可敬。

可敬的高手!!!!!!


来自:斗士, 时间:2003-3-20 11:36:00, ID:1696857
从SQL Server导出时,用以下语句:
ADOConnection.Execute(\'Select * Into [Text;Database=c:\\temp].aaaa.txt From aaaa\');
报错:[c:\\temp].aaaa.txt 数据库不存在;
连接SQL Server的ADOConnection使用Microsoft OLE DB Provider for SQL Server;
改用Access导出Text,ADOConnection用Jet 4.0,可以成功。什么原因?



来自:原野飞侠, 时间:2003-3-20 11:36:00, ID:1696858



来自:碧血剑, 时间:2003-3-20 11:54:00, ID:1696914
:斗士
那就是Access导出到文本的
有两种方法
1。SQLServer先建立链接服务器,然后导出,
2。ADO连接指向Txt,导出



来自:斗士, 时间:2003-3-20 12:01:00, ID:1696941
:大侠碧血剑
1、SQL Server 导出Access、Dbf、Excel、Text等;
2、Access导出Excel、Dbf、SQL Server;
能否详细一点叙述,有代码最好,谢谢!


来自:xuefeiyang, 时间:2003-3-20 12:13:00, ID:1696968
up


来自:唐佐平, 时间:2003-3-20 12:51:00, ID:1697077
Txt文件导入Sql Server怎么写?


来自:maplesw, 时间:2003-3-20 12:57:00, ID:1697106
高手就是高手!能与大家一起分享精品劳动成果!


来自:zhang_yz6666, 时间:2003-3-20 13:50:00, ID:1697330
高手就是高手!能与大家一起分享精品劳动成果!
向你致敬!



来自:qrenj, 时间:2003-3-20 14:22:00, ID:1697443
……
楼主,要是ACCESS数据导到INFORMIX或者是ORACLE里面则么做啊 还不是BATCHMOVE?


来自:碧血剑, 时间:2003-3-20 14:31:00, ID:1697475
txt导入SQLServer
select * from OpenRowset(\'MSDASQL\', \'Driver={Microsoft Text Driver (*.txt; *.csv)};
DefaultDir=c:\\temp;\',\'select * from aaaa.txt\')

to qrenj
Access导入ORACLE肯定可以
INFORMIX我没用过
我说过了,只要是微软支持的OLE DB和ODBC连接的
一定可以


来自:ufo!, 时间:2003-3-20 19:50:00, ID:1698513
谢谢楼主。


来自:www.www, 时间:2003-3-21 10:18:00, ID:1699555
good


来自:dirk, 时间:2003-3-21 10:41:00, ID:1699670
这种方法我四年前就发现了,不过那时还没用delphi,在Access中使用的,最近有个人问了
类似的问题,我回答了,好像也没什么人关注嘛![:(]


来自:dreamfly1024, 时间:2003-3-21 10:53:00, ID:1699729
[:)]


来自:唐佐平, 时间:2003-3-21 11:23:00, ID:1699883
txt文件中每个字段的分割符是什么?


来自:碧血剑, 时间:2003-3-21 11:46:00, ID:1699985
to:唐佐平
默认逗号或空格,可以在连接串中指定


来自:pldu, 时间:2003-3-21 15:30:00, ID:1700903
第二种方法从sql server导出到access如何写


来自:碧血剑, 时间:2003-3-22 9:24:00, ID:1702318
我都说了要举一反三的,可是还是有人问类似的问题,算了,再贴两个例子
c:\\temp\\aaa.dbf to Access,
ADOConnection 指向Access
语句是 select * into bbb from aaa in \'c:\\temp\' \'dbase 5.0;\'

sql server导出到access
ADOConnection 指向Access
SELECT * into table FROM Tab1 IN [ODBC]
[ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]



来自:jianlei, 时间:2003-3-22 10:56:00, ID:1702482
是否只有ADOConnection连接目的地支持SELECT INTO语句才能行,好象在Interbase中不行,请"碧血剑"兄明示!


来自:碧血剑, 时间:2003-3-22 15:01:00, ID:1702882
Interbase我没用过:) select into 不行还有insert into呀
好像她只支持BDE吧
如果不支持ODBC,应该就不行


来自:ninsen, 时间:2003-3-22 15:10:00, ID:1702894
to 碧血剑
谢谢仁兄帮我解决了那么多的问题,非常感谢。小弟在这方面还是个初学者,希望能和
仁兄做个朋友,不知仁兄意下如何。
MDB和DBF转换为EXCEL,EXCEL转换为MDB或者DBF,设置主键小弟在仁兄的帮助下已经解
决,但还有一问题不能解决,那就是EXCEL,MDB转换为SQL无法解决。请仁兄指点一下,不
胜感激。因那边我提问题想结贴,所以在这里提问。


来自:碧血剑, 时间:2003-3-22 15:46:00, ID:1702976
to ninsen
看一下SQLServer联机帮助的
OpenDataSource和OpenRowSet函数
有具体的例子


来自:jump8, 时间:2003-3-22 15:58:00, ID:1703003
楼主你好!我在我提出的同一个问题中已给你加分了。
但在VFP6.0转换时还是会出现 chshanghai 所说的datetime 类型的字段不能转换。
我试过DBase 5.0、DBASE IV、FoxPro 3.0等等Extended properties属性都不行,
请问在还有哪些Extended properties属性可以使用?谢谢!



来自:碧血剑, 时间:2003-3-22 16:12:00, ID:1703043
我也要到MSDN上才能查到,可是从今天起我可能会比较忙
现在要下线了,我可是用小猫猫上网的呀
你先用VFP的create table 还是 select into 具体我忘了:)
把格式转为dabse的,再导数据
试试



来自:ninsen, 时间:2003-3-22 16:16:00, ID:1703047
to 碧血剑
小弟比较笨,看了帮助以后还是不能解决问题,请仁兄给出具体操作步骤发给我的
信箱吧,chenninsen@163.net,麻烦了。EXCEL或者MDB和SQL互换,在DELPHI中写程序。


来自:l_q28, 时间:2003-3-22 16:25:00, ID:1703073
UP


来自:jump8, 时间:2003-3-22 16:39:00, ID:1703103
to 碧血剑
我试过了,把格式转为dabse的再导数据是可以的。但我要在VFP生成的数据中取出数据
上传到MS-SQL2000,所以还是要用VFP6.0的格式,MSDN能找到吗,我好象没有看到的?麻烦
你有空的时候帮我找找看,谢谢!



来自:fyyx2002, 时间:2003-3-22 17:18:00, ID:1703190
===============》
真希望每个人都能象楼主那样把自己摸索的经验和过程拿出来和大家分享探讨,中国的软件
事业就一定会繁荣起来!这样才是真正的中国精神,不要在做敝帚自珍的事了!团结起来
为了你我共同的进步,为了中国软件事业的腾飞!让我们能以自己是中国人而自豪!
=====================》


来自:xa_t, 时间:2003-3-23 14:27:00, ID:1704141
请问如果要update/insert,你如何解决呢???[?][?][?]


来自:碧血剑, 时间:2003-3-23 18:17:00, ID:1704486
to :xa_t 我晕了
把select 语句改成insert into或update语句呀


来自:lovedp, 时间:2003-3-23 19:34:00, ID:1704578
up


来自:kongl, 时间:2003-3-24 13:22:00, ID:1706007
连接excel不好用啊,用帮助中的例子也不成功.



来自:coolfun, 时间:2003-3-25 14:35:00, ID:1708966
to 碧血剑
再请教一个问题,我这里要求要ACCESS的数据表导出到TXT文件中,要求以TAB来分隔每
个字段,请问怎么实现。


来自:碧血剑, 时间:2003-3-26 8:27:00, ID:1710470
应该是这样吧
SELECT * INTO [Text;DATABASE=文本文件路径;TabDelimited].[文本文件名称] FROM Table


来自:gamegirl, 时间:2003-3-26 8:31:00, ID:1710480
谢谢


来自:lwz18, 时间:2003-3-26 15:54:00, ID:1712378
[?]请问visual foxpro 6.0 怎么导到sql server 2000去?
我执行SELECT * into rqjj
FROM OpenDataSource( \'Microsoft.Jet.OLEDB.4.0\',
\'Data Source=e:\\rqjj;User ID=sa;Password=linkcm;Extended properties=visual foxpro 6.0\')...rqjj
select * from rqjj
提示如下:服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 \'Microsoft.Jet.OLEDB.4.0\' 报错。验证失败。
[OLE/DB provider returned message: 无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开。]
OLE DB 错误跟踪[OLE/DB Provider \'Microsoft.Jet.OLEDB.4.0\' IDBInitialize::Initialize returned 0x80040e4d: 验证失败。]。



来自:coolfun, 时间:2003-3-26 18:37:00, ID:1712914
TO:碧血剑

来自:碧血剑, 时间:2003-3-23 18:17:00, ID:1704486
to :xa_t 我晕了
把select 语句改成insert into或update语句呀

用select 语句是可以的,但是用insert into的时候,就说insert into语法错误,请你
帮忙。随便再问一下,access的表怎么样导出来dbase5.0中。




来自:wr960204, 时间:2003-3-28 16:18:00, ID:1718748
挺好的


来自:zhaq, 时间:2003-3-30 1:11:00, ID:1721697
老兄,我想把分割符为'|'的文本文件导入到sqlserver中,怎么写语句?并且文本文件在客户机上
,我是不是还要把文本文件拷到sqlserver服务器上才能导入?倒入前是不是要到odbc里配置
文本文件,会否则提示你列名与表定义不符?谢谢碧血剑给够解释。


来自:jinyfboss, 时间:2003-3-30 0:12:00, ID:1721716
碧血剑:
佩服!佩服!敬仰!敬仰!难得!难得[:)]


来自:myjane, 时间:2003-3-31 11:45:00, ID:1724094
TO:碧血剑
VTP 6.0 如何导到ACCESS中????


来自:任豆豆, 时间:2003-3-31 11:49:00, ID:1724109
good


来自:lovedp, 时间:2003-3-31 11:59:00, ID:1724144
UP!俺也试试!


来自:kypansky, 时间:2003-3-31 17:26:00, ID:1725537
SQL Server数据导到Excel数据库怎么做呀?能说详细点吗?


来自:碧血剑, 时间:2003-3-31 19:19:00, ID:1725855
to :kypansky
sql server导出到excel和sql server导出到Access是一样的
ADOConnection 指向excel, 用Jet4.0 ,Extended properties设为Excel 8.0
SELECT * into table FROM Tab1 IN [ODBC]
[ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]




来自:kypansky, 时间:2003-3-31 22:56:00, ID:1726289
十分感谢碧血剑的回答.我使用时,不知道哪地方没有设好?出现死等的状态.你帮我看一下下面设置对吗?
在Form中设置ADOConnection1的联接属性如下(test.xls:为我要将数据导入文件名.):
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\TEMP\\test.xls;Extended Properties=Excel 8.0
程序如下:
procedure TFormMain.Button1Click(Sender: TObject);
begin
ADOConnection1.Connected ;
ADOConnection1.Execute (\'SELECT * into test01 FROM Fund IN [ODBC] [ODBC;Driver=SQL Server;UID=admin;PWD=;Server=(lacal);DataBase=CMBXMDM;]\');
end;
但执行时,是死等(死机)状态.查看进程:未响应
谢谢!




来自:nokia33503350, 时间:2003-4-1 9:10:00, ID:1726748
upupupup
upupupup


来自:碧血剑, 时间:2003-4-1 16:55:00, ID:1728422
:kypansky,
我自己试了一下,没问题的
我的连接串
Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\\temp\\a.xls;Mode=Share Deny None;Extended Properties="Excel 8.0;HDR=Yes;";Persist Security Info=False;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=34;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don\'t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
语句
ADOConnection1.Execute (\'SELECT * into test01 FROM vda1 IN [ODBC] [ODBC;Driver=SQL Server;UID=sa;PWD=;Server=jl;DataBase=ynxf;]\');

估计可能是你的SQLServer的问题



来自:unidragon, 时间:2003-4-5 17:03:00, ID:1741095
up!!!


来自:Radeon, 时间:2003-4-8 23:57:00, ID:1750666
to 碧血剑:
谢谢!我摸了一个月,也没有搞定这些事。现在得到了你的指点,真是太感谢了。
碧血剑,delphibbs good。


来自:jsjjohn, 时间:2003-4-9 8:50:00, ID:1750935
佩服,好方法。交个朋友:kuangke@sina.com


来自:qinwq, 时间:2003-4-9 9:03:00, ID:1750977
真是高手,帮我解决大问题了。谢谢你。


来自:qinwq, 时间:2003-4-9 9:37:00, ID:1751129
to 碧血剑:
能否告诉我access转dbf,excel的办法?
谢谢!


来自:hmzz, 时间:2003-4-9 11:35:00, ID:1751667
为什么我的是这样:
SELECT *
FROM OpenDataSource(\'Microsoft.Jet.OLEDB.4.0\',\'Data Source="d:\\Book1.xls";Extended Properties="Excel 5.0;HDR=Yes;";Persist Security Info=False\')...sheet1$
-------------------------------------------------

服务器: 消息 7399,级别 16,状态 1,行 1
OLE DB 提供程序 \'Microsoft.Jet.OLEDB.4.0\' 报错。提供程序未给出有关错误的任何信息。



来自:hmzz, 时间:2003-4-9 11:37:00, ID:1751676
哦,应该是8.0才对


来自:DELPHI鸟, 时间:2003-4-10 0:53:00, ID:1754171
我是个菜鸟,提个问题大家别笑。假设我的理解没有错误的话。
我理解:楼主的思路是可以将源数据库中的数据倒成文本文件,再将文本文件传到SQL-Server
中。将规范的文本文件(字段数据间有,等分隔)写入到SQL-SERVER、MY-SQL、ACCRESS中
是完全没有问题的。但是我有个问题在ACCRESS中OLE对象如果存成文本文件,将是以什么方式
写的。在ACCRESS中的OLE对象是在字段前进行加位处理的。如果按照加位以后的文本文件向
SQL-Server中写如的话,是否能保证目标数据库图象和源数据库中的图象是完全一样的。
还有关于时间字段的处理。楼上的各位大侠是怎么处理的?
小弟实在是很笨希望大家不吝赐教!


来自:DELPHI鸟, 时间:2003-4-10 0:54:00, ID:1754173
不知道楼主能不能有耐心看到我以上的留言啊?



来自:jslygwx, 时间:2003-4-10 9:22:00, ID:1754552
UP


来自:chunming, 时间:2003-4-10 9:38:00, ID:1754631
晕,我用Access数据库成功,但用Oracle不可以导出数据到Text啊!!!!!



来自:iwantflywithwinder, 时间:2003-4-16 11:32:00, ID:1773604
hmzz,你的excel表正在打开,关闭就好了。
我有个问题要和大家讨论啊,就是opendatasourse里面的参数我想用变量代替,
却无法实现,求解决的办法。因为实际应用中文件是要求课选择的啊。
declare @ds varchar(200)
select @ds=char(39)+\'Data Source=D:\\srmisII\\srmisii文档\\实施\\0415\\编码.xls\'+\';User ID=Admin;Password=;Extended properties=Excel 5.0\'+char(39)
print @ds
SELECT * FROM OpenDataSource( \'Microsoft.Jet.OLEDB.4.0\',@ds)...goods$

char(39)是\'


来自:碧血剑, 时间:2003-4-17 21:45:00, ID:1779611
to:DELPHI鸟
你的问题直接将Access导入SQLServer就可以了,和用不用文本无关呀!
不明白你为什么要Access->txt->SQLServer,直接Access->SQLServer就可以了

to:iwantflywithwinder
你把整个语句赋给一个变量,然后exec就可以了



来自:bihai, 时间:2003-4-19 16:40:00, ID:1783958
以下用法我測試的情形存在以下問題,以簡体中OK,在繁体下出錯(導出為paradox表)
"Database \'paradox 7.x;database=..\'does not exist"

ADOConnection.Execute(\'Select * Into abcd From [Text;Database=c:\\temp].aaaa.txt\');



来自:zhbforce, 时间:2003-4-19 18:18:00, ID:1784217
cn.Execute(\'SELECT * into test01 FROM JSBB1 in [ODBC]\'+
\'[ODBC;dsn=myora;User Name=scott;password=tiger]\');

将Oracle导入到Access的方法,速度非常之快,3000多条记录,只需要4秒钟。
但是有一个缺点:每次运行到这里的时候,都会跳出Oracle8 ODBC Driver Connnect
的对话框,要求输入密码,不知道有没有办法将其屏蔽掉?

加入Persist Security Info=True也不行。

多谢碧血剑兄,打心眼里佩服!


来自:chunming, 时间:2003-4-21 10:12:00, ID:1786813
碧血剑兄,有没有做过从Oracle导入到Text?
我试了两种方法:
1、ADOConnection1.Execute(\'select * into [text:Database=E:\\TEST].TEST.txt from mara\');
结果是出错,信息为:"Invalid Character"。
这个可以理解:Oracle不支持Select into。

2、ADOConnection1.Execute(\'create table [text:Database=E:\\TEST].TEST.txt as select * from mara\');
错误信息为:"Invalid Table Name"

请教从Oracle导入到Text或Text导入到Oracle的方法。多谢!


来自:henrygaun, 时间:2003-4-23 0:35:00, ID:1793528
请教从sql sever导出数据到*.db


来自:碧血剑, 时间:2003-4-23 9:48:00, ID:1794057
to henrygaun
同SQLServer->excel类似,只是连结串属性pardox 7.X就行了


来自:chunming, 时间:2003-4-23 9:51:00, ID:1794066
碧血剑兄没做过Oracle的导入导出吗?或者给些建议,多谢!


来自:kypansky, 时间:2003-4-23 12:55:00, ID:1794880
碧血剑:
你好!
在SQLServer中执行SELECT * into bmk FROM OpenDataSource( \'Microsoft.Jet.OLEDB.4.0\',\'Data Source="e:\\share";User ID=Admin;Password=;Extended properties=dBase 5.0\')...bmk
这样就可以把e:\\share中的bmk.dbf表导入到Sqlserver中.
但在操作时发现SQL Server数据库如果不装在本机(DBF文件在本机),而是装在网络机器上执行时会有问题.而若DBF文件和SQL Server数据库在同一机器上时就没有问题.请问如何解决这个问题呢?
谢谢!


来自:碧血剑, 时间:2003-4-23 15:59:00, ID:1795713
to chunming
看你楼上的留言,方法类似
to kypansky
SQLServer在服务端执行语句,所以DBF必须在服务器上,
你只能把它拷过去执行


来自:henrygaun, 时间:2003-4-24 13:27:00, ID:1798502
多谢碧血剑的指教
 请问txt->sqlsever时,如果用tab分开各个字段?能说详细点吗?



来自:衫菜, 时间:2003-4-24 13:38:00, ID:1798540
碧血剑你把我害哭了,
上次我的问题到最后还是不行,
你说要把字段头一起倒出来到TXT中,
那BCP中没这个功能的啊


来自:碧血剑, 时间:2003-4-25 8:43:00, ID:1800536
to 衫菜
被你打败了!
你可以自己在文本文件的第一行加上字段名呀!就几行语句可以搞定的事情!
变通一下,不要那么认死理儿。
否则没有字段名,你的文本内容又是一连串的逗号,当然有问题了



来自:catfox, 时间:2003-4-25 8:57:00, ID:1800584
衫菜的月薪很高的吧, 怎么......................


来自:酷龙, 时间:2003-4-25 9:29:00, ID:1800754
这个不错,厉害呀!


来自:f2000, 时间:2003-4-25 9:31:00, ID:1800766
要是有几万条数据 速度快不快

Access 能和 SQLServer 用你的方法相互到动吗


来自:衫菜, 时间:2003-4-25 10:09:00, ID:1800978
to catfox:
这个现在讨论的是技术问题啊,
和月薪没多大关系的呀,
我现在是把SQLSERVER中的数据BCP到文本文件的,
所以是不可能加上表头字段的,
因为有些东西如果自己用那么怎么改也没关系,
有些数据和别人达成协议后是不能轻易改动的拉。


来自:catfox, 时间:2003-4-25 10:23:00, ID:1801058
[:)]


来自:wang_phoenix, 时间:2003-4-25 10:27:00, ID:1801081
up studying!!


来自:hyneter, 时间:2003-4-25 11:40:00, ID:1801489
碧血剑兄:
我是菜鸟,在SQLServer 2000 中导出到TXT文档还无法完成。
我的连接:Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;
Data Source=HYNETER //HYNETER此为SQLServer服务器名称。
我的语句:ADOConnection1.Execute(\'Select * into [Text;Database=c:\\temp;TabDelimited].test.txt from table\');
错误提示:数据库 \'Text;Database=c:\\temp;Tabdelimited\' 不存在。
请再指教!



来自:XdxDaxiong, 时间:2003-4-26 18:10:00, ID:1805655
碧血剑兄:

SELECT * into tpSplib
FROM OpenDataSource( \'Microsoft.Jet.OLEDB.4.0\',
\'Data Source="e:\\XdxMarket";User ID=Admin;Password=;Extended properties=dBase 5.0\')...tpSplib

这有正确吗?Help Help Me。
Email:XdxDaxiong@163.com
MSN:2718060@163.com
QQ:59745865
望回音。


来自:kris_ren, 时间:2003-4-26 21:21:00, ID:1805955
要用编程实现sqlserver到oracle的数据转移该怎么办呢?切楼主解答


来自:tohappy, 时间:2003-4-27 8:12:00, ID:1806411
关注下列问题,一定对你有益:
delphibbs.com/delphibbs/dispq.asp?lid=1743719
delphibbs.com/delphibbs/dispq.asp?lid=1742072
delphibbs.com/delphibbs/dispq.asp?lid=1655569
delphibbs.com/delphibbs/dispq.asp?lid=1786356


来自:Radeon, 时间:2003-4-29 23:51:00, ID:1815820
碧血剑兄:
用什么方法在一个Access2000中打开另一个Access2000库(有密码,但密码已知)中的表。
在程序中实现。


来自:down186, 时间:2003-4-30 9:54:00, ID:1816426
up


来自:xiamouse, 时间:2003-4-30 11:06:00, ID:1816859
to 楼主
能不能帮我决解这个问题:http://delphibbs.com/delphibbs/dispq.asp?lid=1797588
我的文本格式是用'|'线分隔的,'|'与'|'之间是一个字段
如:aaaa|bbb|cccc|dddd|
aaa|bbb|c|ddd|



来自:DuckJoe_1, 时间:2003-5-8 10:36:00, ID:1839321
thx


来自:chunming, 时间:2003-5-15 11:07:00, ID:1862827
ADOConnection.Connected := True;
ADOConnection.Execute(\'Select * Into abcd From [Text;Database=c:\\temp].aaaa.txt\');
用这个方法,是不是一定要先有schema.ini配置文件?

还有
ADOConnection1.Execute(\'Select * into [Text;Database=c:\\temp;TabDelimited].test.txt from table
在Test.txt存在时就会出错,而且,即使指定TabDelimited,出来的结果还是一","分隔

另外从Text或Excel到Oracle还是没有成功,我做的两个例子有什么问题?:
1、ADOConnection1.Execute(\'select * into [text:Database=E:\\TEST].TEST.txt from mara\');
结果是出错,信息为:"Invalid Character"。
这个可以理解:Oracle不支持Select into。

2、ADOConnection1.Execute(\'create table [text:Database=E:\\TEST].TEST.txt as select * from mara\');
错误信息为:"Invalid Table Name"

错在哪里?请已经有成功经验的朋友说说看,谢谢!


来自:左右手, 时间:2003-5-16 16:28:00, ID:1867726
别说ORACLE了,我拿access都没试成功
ADOConnection.Connected := True;
ADOConnection.Execute(\'Select * Into abcd From [Text;Database=c:\\temp].aaaa.txt\');
结果出错告诉我from子句里有语法错误,偶可是拷过去的,应该没什么错的,哪位调通了的给指点一下。



来自:左右手, 时间:2003-5-19 11:16:00, ID:1873890
呵呵,access终于试成功了,不过其他数据库还在实验中,哪位仁兄有试通了oracle和informix的请给个例子


来自:左右手, 时间:2003-5-21 10:20:00, ID:1880668
informix的也已经搞定了,20多万条数据,用了几分种就搞定了,速度确实快。
就是oracle还是不成功
1.连接指向oracle
执行:select * into [text:Database=C:\\].test.txt from gds_order
出错:missing keyword,不知道是什么意思,怎么也调不同
2.连接指向txt文件,ODBC是指向oracle的
执行:insert into test.txt select * from gds_order
in [ODBC][ODBC;DSN=hbqzb;UID=hbqzb;PWD=hbqzb;Persist Security Info=True]
出错:告诉找不到gds_order这个表,可这个表绝对存在,而且名字没写错。
哪位试通了的话,给个说明,多谢了。


来自:hyneter, 时间:2003-5-21 11:50:00, ID:1881240
左右手:SQL的搞定了吗?给个例子,指点一下如何?


来自:左右手, 时间:2003-5-21 16:38:00, ID:1882563
楼上的,你是问SQLSERVER的吗?我还没试,因为我在单位的机器上没装
给你一个informix到access的例子,应该是一样的,你先拿去试试,如果不行的话,我再拿
回家在SQLSERVER上试试,你试通了记得告诉我,我就懒的再试了:)
连接指向access,执行下面语句,就可以把dsn所指向的informix的数据写进access中
insert into gds_order select * from gds_order
in [ODBC][ODBC;dsn=jbcmis;User Name=informix;password=informix;]


oracle的有谁弄出来了,能否给个例子?


来自:trojans, 时间:2003-5-21 17:37:00, ID:1882927
用ADO进行SQLSERVER转TXT不能,似乎是因为ADO不支持Microsoft Text Driver引擎,
看来要转的话不能用ADO了


来自:hyneter, 时间:2003-5-21 20:53:00, ID:1883443
左右手:我指的是从SQLSERVER转到TXT文件,我还没有试成功。如果你试OK请给个例子,先谢了!


来自:左右手, 时间:2003-5-22 8:54:00, ID:1884066
好,偶晚上回去试试。
昨天回去试了SQLSERVER转到access的,连接指向SQLSERVER,用opendatasource到是可以
查出access的数据,但是似乎有点问题,因为我的access里有二十多个字段,可是只查出
来最后面的5个字段,其他字段都没有,不知道是什么原因?


来自:dlink, 时间:2003-5-22 9:08:00, ID:1884130
----------------------------------------------
╭⌒╭⌒╮╭⌒╮~╭⌒╮
╬ ╱◥███◣╬╬╬╬╬╬╬╬╬╬╬
╬ ︱田︱田 田 ︱          ╬
----------------------------------------------



╲█◤
◢██◣
◤◥


\\\\\\|///
\\\\ - - //
( @ @ )
+---------------------oOOoo-(?)ooOOo---------------------+
| |
| |
| Ooooo |
+-----------------------ooooO--( )---------------------+
( ) )|/
\\|( (_/
\\_)



("`-\'\'-/").___..--\'\'"`-._
`6_ 6 ) `-. ( ).`-.__.`)
(_Y_.)\' ._ ) `._ `. ``-..-\'
_..`--\'_..-_/ /--\'_.\' ,\'
(il),-\'\' (li),\' ((!.-\'


来自:碧血剑, 时间:2003-5-22 14:06:00, ID:1885579
to hynetey
将SQLServer导入到文本文件
连接串
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\temp;Extended Properties="text;HDR=YES;";Persist Security Info=False
SQL语句
SELECT * into aaa.txt FROM Tab1 IN [ODBC]
[ODBC;Driver=SQL Server;UID=sa;PWD=;Server=127.0.0.1;DataBase=Demo;]
要改变分隔符,可以修改
Schema.ini文件。该文件中指明分割符,如:
[yourfile.txt]
...
Format=Delimited(|)
更详细的例子可以参考:微软的Knowledge Base的文章:"Q149090 CC: How to Use Schema.ini for Accessing Text Data"和微软的Knowledge Base的文章:"Q187670 OWTO: Use RDO and ODBC Text Driver to Open a Delimited Text"。



来自:dlink, 时间:2003-5-22 15:21:00, ID:1885905
请 碧血剑 高手指点一二

是一个公安局的项目
从Access 数据库中的一个表 有一百万条记录
要导入Oracle 中
其中:1 Access 数据库中的表 有相片

怎样才能 效率高些 又稳固




来自:hyneter, 时间:2003-5-22 15:58:00, ID:1886103
谢谢楼主---碧血剑!测试OK!
我在提出问题那为你加分,略表心意。


来自:左右手, 时间:2003-5-22 16:21:00, ID:1886214
to:碧血剑
老兄,你终于又上来了,能否给说说oracle跟其他数据库怎么导数据,我搞了好几天了都不行
另外上面我说的那个缺字段的问题不知道你碰到过没有,怎么解决?


问题讨论没有结束 ...
99441dudu,对此问题,您可以:


8 8 8
8 添加您对此问题的注释(请注意换行)

--------------------------------------------------------------------------------
正文标题一标题二标题三标题四黑色红色蓝色棕色绿色金色黄色紫色 --程序 更多 ...
--------------------------------------------------------------------------------


8如果有人回答了这个问题,请用 email 通知我。



在这里发贴,表示您接受了大富翁论坛的 游戏规则 和 版权协议





(C) 版权所有,大富翁论坛 1998-2001
感谢您的惠顾,如有任何建议和意见,请 联系版主。2001.4.1


[/SIZE][/SIZE][/SIZE][/SIZE]
--------------------------------------------------------------------------------

-- 作者:99441dud
-- 发布时间:2003-5-25 9:20:25

--
看完了留个言,谈谈哦!
--------------------------------------------------------------------------------

-- 作者:waterok
-- 发布时间:2003-5-25 11:16:47

--
正准备搞SQL Server,
好啊!!
--------------------------------------------------------------------------------

-- 作者:pensee
-- 发布时间:2003-5-27 19:39:32

--
晕啊,文大概是好文,可看下来一个头八个大,注意些格式不行吗?
--------------------------------------------------------------------------------

-- 作者:99441dud
-- 发布时间:2003-5-30 20:51:16

--
具好的东西没人反映,是不是以为很菜!
大家快点来,学学点东西充实一下也好1
--------------------------------------------------------------------------------

-- 作者:xtaiss
-- 发布时间:2003-5-31 13:18:44

--
好大的文件
--------------------------------------------------------------------------------

-- 作者:jack968
-- 发布时间:2003-5-31 17:06:53

--
提个意见吧:注意一下排版,好的内容最好也有好形式,不要把无相关的评论也贴出来,太乱了。
--------------------------------------------------------------------------------

-- 作者:waterok
-- 发布时间:2003-6-2 23:01:23

--

以下是引用jack968在2003-5-31 17:06:53的发言:
提个意见吧:注意一下排版,好的内容最好也有好形式,不要把无相关的评论也贴出来,太乱了。





有时候是没有时间哦,,,
--------------------------------------------------------------------------------




Powered By :Dvbbs Version 7.0.0 Sp2
Copyright ©2002 - 2003 www.myf1.net
执行时间:312.50000毫秒。查询数据库4次。
当前模板样式:[默认模板]




0

评论Comments