想用一个批处理将数据库导入到SQL中 给个完整的批处理命令 感谢啊

liehome 2009-11-30 11:32:10
想用一个批处理将数据库导入到SQL中 给个完整的批处理命令 感谢啊
在网上找到下面的 但是失败
@echo on
osql -u sa -p sa -i c:\Attach.sql
pause
@echo off


exec sp_attach_db @dbname=N'LPaper',

@filename1=N'd:\LPaper_Data.MDF',
@filename2=N'd:\LPaper_Log.LDF'

go
...全文
320 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcuandy 2009-12-01
  • 打赏
  • 举报
回复
调用方法 test为库名, 假设mdf和ldf同时位于当前路径下,并且命名为 库名.扩展名
xx.bat test

如果需要指定路径,用户名,mdf名,ldf名,加参数即可。
@ECHO OFF
SET DB=%~1
SET MDF=%~1
SET LDF=%~1
ECHO RUN AttachDB CODE : SP_ATTACH_DB %DB% , '%CD%%MDF%.mdf' ,'%CD%%LDF%.ldf'
OSQL -E -Q "SP_ATTACH_DB %DB% , '%CD%%MDF%.mdf' ,'%CD%%LDF%.ldf'"
Mirana_NightShade 2009-11-30
  • 打赏
  • 举报
回复
up
icelovey 2009-11-30
  • 打赏
  • 举报
回复
没在BAT中运行过..等高手试过的来..
liehome 2009-11-30
  • 打赏
  • 举报
回复
谁来帮帮我
liehome 2009-11-30
  • 打赏
  • 举报
回复
大家帮忙说下重点 谢了 给个批处理命令批处理直接运行就能OK
liehome 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 icelovey 的回复:]
SQL code看上去没什么问题啊,语法是这样的吧

  连接数据库的命令:


  Sp_attach_db或者sp_attach_single_file_db
  s_attach_db[@dbname =] ′dbname′,[@filename1 =] ′filename_n′[,...16]
  sp_attach_single_file_db[@dbname =] ′dbname?-
[/Quote]

有点迷茫 能给我完整的吗 在.BAT中执行就能将数据库导入到SQL中
ChinaJiaBing 2009-11-30
  • 打赏
  • 举报
回复
Transact-SQL语句进行导入导出:

1.在SQL SERVER里查询access数据:
-- ======================================================
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=')...表名
-------------------------------------------------------------------------------------------------
2.将access导入SQL server
-- ======================================================
在SQL SERVER 里运行:
SELECT *
INTO newtable
FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\DB.mdb";User ID=Admin;Password=' )...表名
-------------------------------------------------------------------------------------------------
3.将SQL SERVER表里的数据插入到Access表中
-- ======================================================
在SQL SERVER 里运行:
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source=" c:\DB.mdb";User ID=Admin;Password=')...表名
(列名1,列名2)
select 列名1,列名2 from sql表
实例:
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'C:\db.mdb';'admin';'', Test)
select id,name from Test
INSERT INTO OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'c:\trade.mdb'; 'admin'; '', 表名)
SELECT *
FROM sqltablename
-------------------------------------------------------------------------------------------------

二、SQL SERVER 和EXCEL的数据导入导出
1、在SQL SERVER里查询Excel数据:
-- ======================================================
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
SELECT *
FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------

2、将Excel的数据导入SQL server :
-- ======================================================
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
实例:
SELECT * into newtable
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
-------------------------------------------------------------------------------------------------

3、将SQL SERVER中查询到的数据导成一个Excel文件
-- ======================================================
T-SQL代码:
EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
参数:S 是SQL服务器名;U是用户;P是密码
说明:还可以导出文本文件等多种格式
实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
在VB6中应用ADO导出EXCEL文件代码:
Dim cn As New ADODB.Connection
cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"
------------------------------------------------------------------------------------------------

4、在SQL SERVER里往Excel插入数据:
-- ======================================================
insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)

T-SQL代码:
INSERT INTO
OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',
'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]
(bestand, produkt) VALUES (20, 'Test')
-------------------------------------------------------------------------------------------------

总结:利用以上语句,我们可以方便地将SQL SERVER、ACCESS和EXCEL电子表格软件中的数据进行转换,为我们提供了极大方便!
EXEC master..xp_cmdshell 'bcp "select OrderID,ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry from Northwind.dbo.orders" queryout "d:\Oreders.txt" -t"|" -c -q -S"127.0.0.1" -U"sa" -P""'
SELECT *
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="xxxx.xls";Extended Properties="Excel 8.0";IMEX=1;Persist Security Info=False')...[a1$]
icelovey 2009-11-30
  • 打赏
  • 举报
回复
看上去没什么问题啊,语法是这样的吧

  连接数据库的命令:


  Sp_attach_db或者sp_attach_single_file_db
  s_attach_db [@dbname =] ′dbname′, [@filename1 =] ′filename_n′ [,...16]
  sp_attach_single_file_db [@dbname =] ′dbname′, [@physname =] ′physical_name′


  使用此方法可以正确恢复SQL Sever7.0和SQL Server 2000的数据库文件,要点是备份的时候一定要将mdf和ldf两个文件都备份下来,mdf文件是数据库数据文件,ldf是数据库日志文件。

  例子:

  假设数据库为test,其数据文件为test_data.mdf,日志文件为test_log.ldf。下面我们讨论一下如何备份、恢复该数据库。

  卸下数据库:sp_detach_db ’test’

  连接数据库:


  sp_attach_db ’test’,’C:\Program Files\Microsoft SQL
  Server\MSSQL\Data\test_data.mdf’,’C:\Program Files\Microsoft SQL
  Server\MSSQL\Data\test_log.ldf’
  sp_attach_single_file_db ’test’,’C:\Program Files\Microsoft SQL
  Server\MSSQL\Data\test_data.mdf’
呦呦 2009-11-30
  • 打赏
  • 举报
回复
up
like0112 2009-11-30
  • 打赏
  • 举报
回复
留下脚印
licry01 2009-11-30
  • 打赏
  • 举报
回复
对了, 补充一些, 附加数据库操作, 比如是system admin角色
licry01 2009-11-30
  • 打赏
  • 举报
回复
@echo off
osql.exe -n -U sa -P sa -S 192.168.0.1 -d [master] -i "c:\Attach.sql"

pause


红色部分是sqlserver的地址, 可以是IP(127。0。0。1), 也可以是名称(localhost), 替换掉就ok了




----------------------
每天回帖有10个可用分
xman_78tom 2009-11-30
  • 打赏
  • 举报
回复
首先验证一下直接运行 sqlcmd -E 是否可以正确登陆。
再在 sqlcmd 下执行 exec sp_attach_db @dbname=N'LPaper', @filename1=N'd:\LPaper_Data.MDF',@filename2=N'd:\LPaper_Log.LDF' 存储过程是否可以正确附加数据库。

liehome 2009-11-30
  • 打赏
  • 举报
回复
@ECHO OFF
NET START MSSQLSERVER
CLS
COLOR B

:START
ECHO 选项:
ECHO [1].查看已存在的数据库名称;
ECHO [2].附加数据库;
ECHO [3].分离数据库;
ECHO [4].EXIT.

SET /P SELECT=请输入代表选项的数字:
IF %SELECT%==1 GOTO DBNAME
IF %SELECT%==2 GOTO ATTACH
IF %SELECT%==3 GOTO DETACH
IF %SELECT%==4 GOTO END

:DBNAME
CLS
OSQL -E -Q "SELECT NAME,FILENAME FROM MASTER..SYSDATABASES WHERE SID<>0X01"
GOTO START

:ATTACH
CLS
ECHO.
ECHO 需要本程序与.MDF文件.LDF文件位于同一文件夹下!
ECHO.
SET /P DB= 请输入要附加的数据库名称:
FOR %%1 IN (*.MDF) DO SET MDF=%%1
FOR %%2 IN (*.LDF) DO SET LDF=%%2
OSQL -E -Q "SP_ATTACH_DB %DB%,'%CD%\%MDF%','%CD%\%LDF%'"
ECHO.
ECHO ===============================================================
ECHO 附加数据库成功!
ECHO ===============================================================
GOTO START

:DETACH
CLS
ECHO.
SET /P DB= 请输入要分离的数据库名称:
OSQL -E -Q "SP_DETACH_DB %DB%"
ECHO.
ECHO ===============================================================
ECHO 分离数据库成功!
ECHO ===============================================================
GOTO START

:END
EXIT
刚找到一个很有用的 谁能帮我分析下 这么改能自动运行下去 不用输入步骤 感谢不尽啊
liehome 2009-11-30
  • 打赏
  • 举报
回复
CMD中运行OSQL 再运行附加 思路有了 就是环节上连接不起来
liehome 2009-11-30
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xman_78tom 的回复:]
@echo off
sqlcmd -Q "exec sp_attach_db @dbname=N'LPaper', @filename1=N'd:\LPaper_Data.MDF',@filename2=N'd:\LPaper_Log.LDF' "

服务器本地以 administrator 帐户运行。
[/Quote]

放到.bat中执行吗?试了下 只是闪了一下就消失了 没发现LPaper 这个数据库导入到SQL中 我该怎么做
xman_78tom 2009-11-30
  • 打赏
  • 举报
回复

@echo off
sqlcmd -Q "exec sp_attach_db @dbname=N'LPaper', @filename1=N'd:\LPaper_Data.MDF',@filename2=N'd:\LPaper_Log.LDF' "

服务器本地以 administrator 帐户运行。

22,298

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧