VBA execl将数据导入数据库

VBA execl将数据导入数据库,第1张

Sub 把Excel数据插入数据库中()

'

'时间:2010-06-28

'作者:bengdeng

'功能:把当前工作表的数据增加到在程序文件同一目录下进销存表数据库中

'注意:要在工具/引用中引用microsoft activex date objects xx

' 其中xx为版本号,可能会因为你安装的office的版本不同而不同,本例引用了25版

'发布:>

$imp

Import:Release81600-Proctionon星期五12月717:01:082001

©Copyright1999OracleCorporationAllrightsreserved

用户名:test

口令:

连接到:Oracle8iEnterpriseEditionRelease81600-64bitProction

Withtheoption

JServerRelease81600-Proction

导入文件:expdatdmp>/tmp/mdmp

输入插入缓冲区大小(最小为8192)30720>

经由常规路径导出由EXPORT:V080106创建的文件

警告:此对象由TEST导出,而不是当前用户

已经完成ZHS16GBK字符集和ZHS16GBKNCHAR字符集中的导入

只列出导入文件的内容(yes/no):no>

由于对象已存在,忽略创建错误(yes/no):no>yes

导入权限(yes/no):yes>

导入表数据(yes/no):yes>

导入整个导出文件(yes/no):no>yes

正在将TEST的对象导入到SCOTT

正在导入表"CMAMENU"4336行被导入

成功终止导入,但出现警告。

导入工具imp非交互式命令行方式的例子

$impsystem/managerfromuser=jonestables=(ats)

$impsystem/managerfromuser=scotttables=(emp,dept)

$impsystem/managerfromuser=scotttouser=joetables=emp

$impscott/tigerfile=expdatdmpfull=y

$impscott/tigerfile=/mnt1/t1dmpshow=nbuffer=2048000ignore=ncommit=ygrants=yfull=ylog=/oracle_backup/log/imp_scottlog

$impsystem/managerparfile=paramsdat

paramsdat内容

file=dbadmpshow=nignore=ngrants=yfromuser=scotttables=(dept,emp)

导入工具imp可能出现的问题

(1)数据库对象已经存在

一般情况,导入数据前应该彻底删除目标数据下的表,序列,函数/过程,触发器等;

数据库对象已经存在,按缺省的imp参数,则会导入失败

如果用了参数ignore=y,会把exp文件内的数据内容导入

如果表有唯一关键字的约束条件,不合条件将不被导入

如果表没有唯一关键字的约束条件,将引起记录重复

(2)数据库对象有主外键约束

不符合主外键约束时,数据会导入失败

解决办法:先导入主表,再导入依存表

disable目标导入对象的主外键约束,导入数据后,再enable它们

(3)权限不够

如果要把A用户的数据导入B用户下,A用户需要有imp_full_database权限

(4)导入大表(大于80M)时,存储分配失败

默认的EXP时,compress=Y,也就是把所有的数据压缩在一个数据块上

导入时,如果不存在连续一个大数据块,则会导入失败

导出80M以上的大表时,记得compress=N,则不会引起这种错误

(5)imp和exp使用的字符集不同

如果字符集不同,导入会失败,可以改变unix环境变量或者NT注册表里NLS_LANG相关信息

导入完成后再改回来

(6)imp和exp版本不能往上兼容

imp可以成功导入低版本exp生成的文件,不能导入高版本exp生成的文件

根据情况我们可以用

$impusername/password@connect_string

说明:connect_string是在/ORACLE_HOME/network/admin/tnsnamesora

定义的本地或者远端数据库的名称

注意事项:

UNIX:/etc/hosts要定义本地或者远端数据库服务器的主机名

win98:windowshosts和IP地址的对应关系

win2000:winntsystem32driversetchosts

百度经验有详细的图文文章(网页链接)介绍编程语句,注意一点,不同的数据库连接代码是不同的。

另外,例子代码是把表中的数据全部读到一个表里面,你可以然后在VLOOKUP填写表的BC列。

VBE 工具 引用,选中 Microsoft ActiveX Data Object 28 Library

我不清楚是不是UFDATA_013_2008表的VENDOR列的数据,如果不是,你自己改一下SQL语句吧,sql = "select VENDOR from UFDATA_013_2008"

Sub SQL数据导入()

Dim cn As New ADODBConnection

Dim rs As ADODBRecordset

Dim str As String

Dim sql As String

Dim i As Integer

str = "Provider=SQLOLEDB;Data Source=SQLSERVER服务器名或IP;DATABASE=数据库;UID=用户名;PWD=密码"

cnOpen str

Set rs = New ADODBRecordset

sql = "select VENDOR from UFDATA_013_2008"

rsOpen sql, cn, adOpenStatic, adLockOptimistic

If Not rsEOF Then

For i = 1 To rsRecordCount

Sheet2Cells(i, 1)Value = rsFields(0)Value

Next i

rsMoveNext

End If

rsClose

cnClose

End Sub

中间的应该是sheet1cells(1,3)copyfromrecordset rst

是不是应该写成data=rstfields("销售额")

回复:是的,这样就可以得到你想要的值。

有二种方法:

1:如果对mysql没有绝对的管理权限,只能查看自己的;那么直接打开navicat,右击在打开菜单列表中“转储SQL文件”,然后直接保存就可以了。

2:如果你对mysql有绝对的管理权限;可以直接打开mysql的安装目录,找到 data文件夹,找到你建立的数据库的文件夹,直接复制你需要的另一个服务器的data文件夹下就可以了。这种是最文便的,也不会出现导入导出的乱码问题。

以上就是关于VBA execl将数据导入数据库全部的内容,包括:VBA execl将数据导入数据库、怎么样导出数据库里的表格和数据(数据库怎么导出excel表格)、excel用VBA连到数据库读出数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9358757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存