【问题标题】:Need Help: Create Stored Procedure for Bulk Insert需要帮助:为批量插入创建存储过程
【发布时间】:2013-03-29 17:27:28
【问题描述】:

首先,我是新手。我在 SQL Server 2008 R2 上。我有一个有效的批量插入脚本。我尝试创建一个存储过程,然后将其保存为storedprocedure.sql。最终,我需要一个.bat 文件来启动批量插入。我有另一个可以运行外部程序的程序,但它只能看到.bat.exe

所以,这是我的批量插入脚本:

Bulk Insert MyDatabase.dbo.cust_adj
From 'C:\path\importformat.txt' 
With 
(
   FieldTerminator= '|', 
   Rowterminator= '\n' 
) 
Go

(this works)

然后我尝试创建存储过程:

Create Procedure LoadDailyAdjReport
AS
    Bulk Insert MyDatabase.dbo.cust_adj 
    From 'C:\path\importformat.txt' 
    With 
    ( 
       FieldTerminator= '|', 
       Rowterminator= '\n' 
    ) 
Go 

它说它成功了......但我不知道如何检查它。

然后我尝试制作一个.bat文件并尝试:

@echo off
sqlcmd -S MyServer\MyDataBase -i C:\mypath\Load_Daily_Adjustment.sql

它不起作用。起初我认为这是我的 .bat 指令(可能不正确),但后来我想知道我的存储过程是否正确。问题是我真的没有足够的知识来解决这个问题。有人可以就这应该是什么样子提供一些建议或指示吗?

非常感谢。

好的,在 SQL Server 上这个 .bat 文件有效:

sqlcmd -S MyServerName -E -d MyDatabase -Q "EXEC MyStoredProcedure"

服务器假设:\Server1\ 我运行 bat 文件的程序在另一台服务器上。文件是共享的,用户对SQL、对Folder、对程序等都有安全性。

如何将 .bat 文件更改为位于程序的服务器上?

因此,在 Server2 上,我希望拥有访问和打开 Server1 上的 .bat 的 bat 文件。为此,我是否需要将 .bat 文件更改为具有 \Server1\PathName\File.bat 的路径?

【问题讨论】:

    标签: stored-procedures batch-file bulkinsert


    【解决方案1】:

    执行 SP LoadDailyAdjReport 的 SQL 将是 EXEC LoadDailyAdjReport - 所以在 ypur 批处理文件 SQLCMD 中试试这个:

    sqlcmd -S YourServerName -E -d YourDataBaseName -Q "EXEC LoadDailyAdjReport"
    

    (-E 使用受信任的连接(Windows 登录)这里有更多详细信息
    http://msdn.microsoft.com/en-us/library/ms162773.aspx)

    如果您想尝试将 .txt 文件名作为参数传递,请参阅
    How do I call a stored procedure with arguments using sqlcmd.exe?

    【讨论】:

    • .bat 文件非常好用,现在我只需要确保我的其他程序能够成功运行它。非常感谢!
    • 好的,我现在有另一个问题...我需要从不同的服务器运行 bat 文件...我编辑了我的原始问题,但它是:
    • 无论 sqlcmd 中指定的服务器是什么,它都会在该服务器上执行该 SP。
    • 当我运行 .bat 文件时,我在命令提示符窗口中看到以下内容:'sqlcmd' 不是内部或外部命令、可运行程序或批处理文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    相关资源
    最近更新 更多