'声明与 sql 谈话时使用的变量
Dim oServer ' SQL Server 对象
Dim oDatabase ' 要使用的目标数据库
Dim oBCP ' BCP 对象
Dim nRows ' 从 bcp 返回的行数
dim table ' 表对象
on error resume next
' 第一个参数必须是数据库
if WScript.Arguments(0) = "" then
WScript.Echo "您没有提供要连接的数据库" WScript.Quit
end if
' 创建 SQL DMO 的实例
Set oServer = CreateObject("SQLDMO.SQLServer")
' 创建 SQL DMO Bulkcopy 对象的实例
Set oBCP = CreateObject("SQLDMO.BulkCopy")
oServer.EnableBcp = True
' 登录到本地服务器
' 希望您已经更改了 sa 口令!!
oServer.Connect ".", "sa"
' 连接到提供的数据库
Set oDatabase = oServer.Databases(Wscript.Arguments(0))' 将分隔符设置为逗号
oBCP.ColumnDelimiter = vbComma
' 将文件类型设置为以逗号分隔
oBCP.DataFileType = SQLDMODataFile_CommaDelimitedChar
oBCP.ImportRowsPerBatch = 1000
oBCP.MaximumErrorsBeforeAbort = 1
BCP.RowDelimiter = vbCrLf
oBCP.ServerBCPDataFileType = SQLDMOBCPDataFile_Char
oBCP.UseExistingConnection = True
' 如果未提供表,则转储所有的表
if wscript.Arguments(1) = "" then
for each table in oDatabase.tables
' 确保该表不是系统表
if table.systemobject = false then
oBCP.DataFilePath = table.name & ".csv"
nRows = table.ExportData(oBCP)
wscript.Echo nRows & " rows exported from " & table.name
end if
nextelse ' 设置输出文件
oBCP.DataFilePath = wscript.Arguments(1) & ".csv"
nRows = oDatabase.Tables(wscript.arguments(1)).ExportData(oBCP)
wscript.Echo nRows & " rows exported from " & wscript.arguments(1)
end if
问题应该出在 nRows = oDatabase.Tables(wscript.arguments(1)).ExportData(oBCP)
但不知道该怎么改?
我要实现的一个功能是把sql server中的表导出到txt文件,再load进db2数据库。
Dim oServer ' SQL Server 对象
Dim oDatabase ' 要使用的目标数据库
Dim oBCP ' BCP 对象
Dim nRows ' 从 bcp 返回的行数
dim table ' 表对象
on error resume next
' 第一个参数必须是数据库
if WScript.Arguments(0) = "" then
WScript.Echo "您没有提供要连接的数据库" WScript.Quit
end if
' 创建 SQL DMO 的实例
Set oServer = CreateObject("SQLDMO.SQLServer")
' 创建 SQL DMO Bulkcopy 对象的实例
Set oBCP = CreateObject("SQLDMO.BulkCopy")
oServer.EnableBcp = True
' 登录到本地服务器
' 希望您已经更改了 sa 口令!!
oServer.Connect ".", "sa"
' 连接到提供的数据库
Set oDatabase = oServer.Databases(Wscript.Arguments(0))' 将分隔符设置为逗号
oBCP.ColumnDelimiter = vbComma
' 将文件类型设置为以逗号分隔
oBCP.DataFileType = SQLDMODataFile_CommaDelimitedChar
oBCP.ImportRowsPerBatch = 1000
oBCP.MaximumErrorsBeforeAbort = 1
BCP.RowDelimiter = vbCrLf
oBCP.ServerBCPDataFileType = SQLDMOBCPDataFile_Char
oBCP.UseExistingConnection = True
' 如果未提供表,则转储所有的表
if wscript.Arguments(1) = "" then
for each table in oDatabase.tables
' 确保该表不是系统表
if table.systemobject = false then
oBCP.DataFilePath = table.name & ".csv"
nRows = table.ExportData(oBCP)
wscript.Echo nRows & " rows exported from " & table.name
end if
nextelse ' 设置输出文件
oBCP.DataFilePath = wscript.Arguments(1) & ".csv"
nRows = oDatabase.Tables(wscript.arguments(1)).ExportData(oBCP)
wscript.Echo nRows & " rows exported from " & wscript.arguments(1)
end if
问题应该出在 nRows = oDatabase.Tables(wscript.arguments(1)).ExportData(oBCP)
但不知道该怎么改?
我要实现的一个功能是把sql server中的表导出到txt文件,再load进db2数据库。
Microsoft (R) Windows Script Host Version 5.6
版权所有(C) Microsoft Corporation 1996-2001。保留所有权利。 rows exported from employees但是文件没有生成
如果用cscript MSsqlExport.vbs northwind导出所有表,也没有结果
Dim oDatabase
Dim oBCP
Dim nRows
dim table
on error resume next
if WScript.Arguments(0) = "" then
WScript.Quit
end if
Set oServer = CreateObject("SQLDMO.SQLServer")
Set oBCP = CreateObject("SQLDMO.BulkCopy")
oServer.EnableBcp = True
oServer.Connect "FLYSKY", "sa"
Set oDatabase = oServer.Databases(Wscript.Arguments(0))
oBCP.ColumnDelimiter = vbComma
oBCP.DataFileType = SQLDMODataFile_CommaDelimitedChar
oBCP.ImportRowsPerBatch = 1000
oBCP.MaximumErrorsBeforeAbort = 1
BCP.RowDelimiter = vbCrLf
oBCP.ServerBCPDataFileType = SQLDMOBCPDataFile_Char
oBCP.UseExistingConnection = True
if wscript.Arguments(1) = "" then
for each table in oDatabase.tables
if table.systemobject = false then
oBCP.DataFilePath = table.name & ".csv"
nRows = table.ExportData(oBCP)
wscript.Echo nRows & " rows exported from " & table.name
end if
nextelse
oBCP.DataFilePath = wscript.Arguments(1) & ".csv"
nRows = oDatabase.Tables(wscript.arguments(1)).ExportData(oBCP)
wscript.Echo nRows & " rows exported from " & wscript.arguments(1)
end if编译器错误,行33,缺少语句
MSsqlExport.vbs(70, 2) Microsoft SQL-DMO: [SQL-DMO]设置大容量复制列格式失败。原确是nRows = oDatabase.Tables(wscript.arguments(1)).ExportData(oBCP)这句出问题,
在网上找了找,还没找到相应的解决方法..
你的脚本我比较了一下,没发现那里有问题。下面的肯定可以执行
Dim oServer ' SQL Server ¶ÔÏó
Dim oDatabase ' ҪʹÓõÄÄ¿±êÊý¾Ý¿â
Dim oBCP ' BCP ¶ÔÏó
Dim nRows ' ´Ó bcp ·µ»ØµÄÐÐÊý
dim table ' ±í¶ÔÏó
'on error resume next
If WScript.Arguments(0) = "" then
WScript.Echo "ÄúûÓÐÌṩҪÁ¬½ÓµÄÊý¾Ý¿â"
WScript.Quit
end if
Set oServer = CreateObject("SQLDMO.SQLServer")
Set oBCP = CreateObject("SQLDMO.BulkCopy")
oServer.EnableBcp = True
oServer.Connect ".", "sa","sa"
Set oDatabase = oServer.Databases(Wscript.Arguments(0))oBCP.ColumnDelimiter = vbComma
oBCP.DataFileType = SQLDMODataFile_CommaDelimitedChar
oBCP.ImportRowsPerBatch = 1000
oBCP.MaximumErrorsBeforeAbort = 1
oBCP.RowDelimiter = vbCrLf
oBCP.ServerBCPDataFileType = SQLDMOBCPDataFile_Char
oBCP.UseExistingConnection = True
If wscript.Arguments(1) = "" then
for each table in oDatabase.tables
if table.systemobject = false then
oBCP.DataFilePath = table.name & ".csv"
nRows = table.ExportData(oBCP)
wscript.Echo nRows & " rows exported from " & table.name
end if
next
else
oBCP.DataFilePath = wscript.Arguments(1) & ".csv"
nRows = oDatabase.Tables(wscript.arguments(1)).ExportData(oBCP)
wscript.Echo nRows & " rows exported from " & wscript.arguments(1)
end if
我连接不同的数据库,出现两种情况:一种是出现刚才的错误,
MSsqlExport.vbs(70, 2) Microsoft SQL-DMO: [SQL-DMO]设置大容量复制列格式失败。
另一种是:
C:\Documents and Settings\Bluewater\桌面\db2\pro\tt.vbs(34, 2) Microsoft SQL-DMO
: [SQL-DMO]名称“order”在 Tables 集合中没有找到。如果该名称是合法名称,则使用 [
] 来分隔名称的不同部分,然后重试。
:\Documents and Settings\Bluewater\桌面\db2\pro\tt.vbs(34, 2) Microsoft SQL-DMO
: [SQL-DMO]名称“order”在 Tables 集合中没有找到。如果该名称是合法名称,则使用 [
] 来分隔名称的不同部分,然后重试。
我回来再试试吧
这是真正的问题,
另一种问题是因为大小写不对
另外,我在网上查到bcp这个命令行工具,可能用这个更容易解决我的问题?只是参数太多,还没找到资料。
http://blog.csdn.net/zjcxc/archive/2004/02/13/20094.aspx
bcp "select * from northwind.dbo.orders" queryout d:\school.txt -c -Scrm_why -Usa -Psa
这样没报错,但结果感觉不是想要的
用-t就可以了不过,如果用dmo的方法的话,那个 [SQL-DMO]设置大容量复制列格式失败。
该如何解决呢?
Dim oDatabase ' ҪʹÓõÄÄ¿±êÊý¾Ý¿â
Dim oBCP ' BCP ¶ÔÏó
Dim nRows ' ´Ó bcp ·µ»ØµÄÐÐÊý
dim table ' ±í¶ÔÏó
'on error resume next
If WScript.Arguments(0) = "" then
WScript.Echo "ÄúûÓÐÌṩҪÁ¬½ÓµÄÊý¾Ý¿â"
WScript.Quit
end if
Set oServer = CreateObject("SQLDMO.SQLServer")
Set oBCP = CreateObject("SQLDMO.BulkCopy")
oServer.EnableBcp = True
oServer.Connect ".", "sa",""
Set oDatabase = oServer.Databases(Wscript.Arguments(0))oBCP.UseExistingConnection = True
If wscript.Arguments(1) = "" then
for each table in oDatabase.tables
if table.systemobject = false then
oBCP.DataFilePath = table.name & ".csv"
nRows = table.ExportData(oBCP)
wscript.Echo nRows & " rows exported from " & table.name
end if
next
else
oBCP.DataFilePath = wscript.Arguments(1) & ".csv"
nRows = oDatabase.Tables(wscript.arguments(1)).ExportData(oBCP)
wscript.Echo nRows & " rows exported from " & wscript.arguments(1)
end if
oBCP.DataFileType = SQLDMODataFile_CommaDelimitedChar
oBCP.ImportRowsPerBatch = 1000
oBCP.MaximumErrorsBeforeAbort = 1
oBCP.RowDelimiter = vbCrLf
oBCP.ServerBCPDataFileType = SQLDMOBCPDataFile_Char这几行删掉ok了,说明这里参数设置不对,
上一楼的代码可以了~ 但是没有设置格式
注释就可以了,默认生成的是,分隔的
oBCP.DataFileType = 3
oBCP.ColumnDelimiter = "|"