Leg*_*end 13 sql sql-server bcp sql-server-2008
使用bcp时,如何使用长查询指定输入sql文件?我尝试使用该-i
选项,但它一直抱怨命令行错误,没有额外的信息.这可能吗?
Lar*_*vid 11
我今天遇到了这个问题,并找到了一个方便的解决方法,至少在临时情况下.
具有连接权限的任何用户都可以创建临时表.这意味着您还可以创建GLOBAL临时表.
只需使用带有全局临时表的SELECT ... INTO在企业管理器(或sql cmd或其他)中运行查询,例如
SELECT *
INTO ##mytemptable
FROM SomeTable
WHERE [massive where clause, for example]
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用简单的BCP查询中的临时表
SELECT * FROM ##mytemptable
Run Code Online (Sandbox Code Playgroud)
然后通过企业管理器删除临时表
DROP TABLE ##mytemptable
Run Code Online (Sandbox Code Playgroud)
我用其他方法解决了这个问题。
我创建了一个批处理文件,该文件读取文件并通过bcp命令发送您的内容。看到:
@ECHO off
SETLOCAL EnableDelayedExpansion
SET queryFile=%1
SET outFileName=%2
FOR /F "delims=" %%i IN (%queryFile%) DO SET join=!join! %%i
ECHO %join%
bcp "%join%" queryout %outFileName% /S.\SQLE_CAESAR /d /c /t"|" /T
Run Code Online (Sandbox Code Playgroud)
该脚本收到两个参数:
在cmd中执行如下脚本: export-query.bat query.sql export.txt
希望对您有所帮助。
就我而言,BCP实用程序仅支持直接写入命令行的Transact-SQL查询。例如:
bcp“从AdventureWorks.Sales.Currency中选择名称” queryout Currency.Name.dat -T -c
根据其引用,“-i”选项:
指定响应文件的名称,其中包含使用交互方式(未指定-n,-c,-w或-N)执行批量复制时对每个数据字段的命令提示符问题的响应。
请注意,它与sqlcmd实用程序 “ -i”选项不同:
标识包含一批SQL语句或存储过程的文件。可以指定多个文件,这些文件将按顺序读取和处理(...)
归档时间: |
|
查看次数: |
21038 次 |
最近记录: |