我有一个工作,有一个存储过程运行BCP到QUERYOUT一些数据.
如果我自己运行QUERYOUT命令,它可以工作.
但是,如果我尝试在JOB中运行它,它会创建文件但"挂起"并且数据永远不会放入文件中.这永远挂起所以我通常终止BCP.exe.
我的问题是:
如何获取SQL作业以运行BCP以执行QUERYOUT并具有执行此操作的权限?
QUERYOUT将转到C:\驱动器(所以没有任何花哨或任何东西).
这个问题让我疯狂,无法在线阅读,看起来运行作业的用户需要该文件夹的权限.该文件夹不受保护或任何其他内容.
SQL作业的所有者是SQL中SYS ADMIN组的一部分.
任何帮助将不胜感激.
我有一个调用存储过程的BCP进程.通常,我一直在执行此存储过程并将数据复制到Excel工作表,我将所有列指定为文本并将其另存为CSV.
我需要自动完成这项工作,并且一直在使用BCP命令,但到目前为止还存在问题.我的数据中有逗号,它将数据向左移动.这是我可以用格式文件或类似的东西克服的吗?
我宁愿不在proc本身的输出中引用它们.
我正在尝试设置一个简单的循环来定期查询bash中的数据库表.通常我似乎必须这样做:
sqsh -s SERV -U user -P passwd -D db -L bcp_colsep=','
Run Code Online (Sandbox Code Playgroud)
然后在sqsh内我必须输入:
select * from some_table where foo=bar
\go -m bcp > /path/to/output.out
Run Code Online (Sandbox Code Playgroud)
我试图使用-Csqsh选项传递命令,如下所示:
sqsh -s SERV -U user -P passwd -D db -L bcp_colsep=',' -C 'select * from some_table where foo=bar \go -m bcp > /path/to/output.out'
Run Code Online (Sandbox Code Playgroud)
但我一直在:
Incorrect syntax near '\'.
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得理想的效果?
我有一个存储过程生成具有FOR XML功能的XML .当我运行存储过程时,我得到了格式精美的XML.
当我尝试使用bcp将此结果导出到文件中时
declare @sql varchar(8000)
select @sql = 'bcp "exec sp_ExportXml" queryout C:\Filename.xml -S (local) -T -w'
exec master..xp_cmdshell @sql
Run Code Online (Sandbox Code Playgroud)
我得到格式错误的xml标签内的换行符,例如
<Division>3</Divi
sion>
Run Code Online (Sandbox Code Playgroud)
我完全无能为力,我尝试了几个不同的参数,bcp queryout但始终得到相同的结果.
任何想法都非常感谢!谢谢
我通过WCF服务中的SFTP会话收到文件。该文件被读入MemoryStream对象。我已将此流成功输出到磁盘上的文件,并验证了文件已成功传输(使用FileStream而不是来完成MemoryStream)。
但是,当我将其转换MemoryStream为a byte[]并将其保存到SQL Server表(该列声明为VARBINARY(MAX))时,似乎该文件前面已经有8个字节。
举例来说,我使用WCF SFTP服务上传了一个.txt文件,并将其保存到数据库中。然后,使用BCP,将文件输出到磁盘。打开文件后,第一行之前带有“ U”(“ U”和7个空格)。
Office文档也是如此。我已经对.xls文件执行了与上述相同的过程,该文件一开始的大小为49Kb。但是,使用BCP输出文件时,文件已损坏且大小为50Kb。
奇怪的是,.pdf文件似乎可以正确保存和导出。
我正在使用的一些代码片段:
将流转换为字节数组
var stream = (MemoryStream)data;
stream.Seek(0, SeekOrigin.Begin);
byte[] m_Bytes = stream.ToArray();
Run Code Online (Sandbox Code Playgroud)
将字节数组保存到SQL Server
cmd.Parameters.Add("@File", System.Data.SqlDbType.VarBinary, -1).Value = file;
Run Code Online (Sandbox Code Playgroud)
使用BCP将文件从SQL Server导出到文件
bcp "SELECT [File] FROM SFTPUpload.dbo.Upload" queryout "C:\SFTP\Test.txt" -T -N -S Server_Name\Instance_Name
Run Code Online (Sandbox Code Playgroud)
这可能是我用来将文件保存到数据库的方法出现问题,还是我如何使用BCP检索文件?后者似乎更有可能,因为将文件直接保存到磁盘不会损坏它。
任何帮助或建议,将不胜感激。
我在SQL Server 2012中的BCP功能有一个小问题.事情是:我使用以下命令加载.jpg图像(大小为167KB):
INSERT [tabela_testowa](数据)SELECT*FROM OPENROWSET(BULK N'C:\ foty\ch6_MagicShop.jpg',SINGLE_BLOB)a;
然后我尝试使用以下方法将其导出回磁盘:
BCP"SELECT data FROM tabela_testowa WHERE ID = 1"queryout"C:\ test\file.jpg"-T -n -d test
文件保存在磁盘上没有问题,大小也是167 KB但是..它不能像原始副本一样打开.我不知道BCP导出中有什么参数错误吗?或者它可能在导入阶段被破坏?有人有类似的问题吗?
我正在尝试创建包含文件系统模块的boost库的子集,因此我可以在项目存储库中包含该子集.我收到链接器错误,直到我手动复制.lib文件.我在Windows 7 64位上使用Visual Studio 2013.
我已经使用bcp成功提取了boost/algorithm/string.hpp及其依赖项,使用以下步骤:
从boost.org下载(v 1.57.0).
提取.
然
bootstrap.bat
Run Code Online (Sandbox Code Playgroud)
然后
b2.exe
Run Code Online (Sandbox Code Playgroud)
(我不知道b2是否对我的目的是必要的.)
通过打开命令提示符来构建bcp工具,我在其中提取了boost存档,然后运行
bjam tools\bcp
Run Code Online (Sandbox Code Playgroud)
作为描述在这里.
通过运行创建boost库子集
dist\bin\bcp.exe algorithm/string.hpp [outdir]
Run Code Online (Sandbox Code Playgroud)将结果复制到我的项目下的子文件夹中,将boost目录添加到C++ include搜索路径,并构建项目.
...
当我将filesystem或filesystem.hpp添加到上面的命令时(即使我在我自己的源文件中使用--scan选项),并将结果复制到我的项目文件夹,然后尝试包含"boost/filesystem.hpp",我明白了
LINK : fatal error LNK1104: cannot open file 'libboost_system-vc120-mt-gd-1_57.lib'
Run Code Online (Sandbox Code Playgroud)
在*.libbcp的输出中找不到文件.为了得到它来建立,我不得不手动复制libboost_system-*.lib和libboost_filesystem-*.libLIB \文件从舞台\我的项目(并添加包含他们项目属性目录- >配置属性- >链接器- >常规- >附加库目录).
这是bcp没有复制所需内容的预期行为吗?还是我错过了一步?或者它是一个bcp bug?
我使用数据库导入/导出来移出和移出SQL Server中的数据没有任何问题.
经过3个小时的搜索,我还没有看到Azure SQL Server数据库的SQL Server Import/Export等效项.
是否有来自MS或其他可以将数据导入/导出到Sql Azure的简单工具/实用程序?
我正在使用BCP将数据从CSV文件批量上传到SQL Azure(因为不支持BULK INSERT).此命令运行并上载行:
bcp [resource].dbo.TableName in C:\data.csv -t "," -r "0x0a" -c -U bcpuser@resource -S tcp:resource.database.windows.net
Run Code Online (Sandbox Code Playgroud)
但data.csv是UTF8编码的,包含非ASCII字符串.这些被破坏了.我已经尝试将-c选项更改为-w:
bcp [resource].dbo.TableName in C:\data.csv -t "," -r "0x0a" -w -U bcpuser@resource -S tcp:resource.database.windows.net
Run Code Online (Sandbox Code Playgroud)
但后来我得到'0行复制'.
我做错了什么以及如何使用BCP批量插入Unicode字符?
我使用简单的代码
declare @sql varchar(8000)
select @sql = 'bcp ExcelAnalysis.dbo.ClearDB out c:\csv\comm.txt -c -t, -T -S '+ @@servername
exec master..xp_cmdshell @sql
Run Code Online (Sandbox Code Playgroud)
但是这段代码导出了我的所有表格,但我只需要一些字段和条件,如:
declare @sql varchar(8000)
select @sql = 'bcp
SELECT
,[vl]
,[data]
,[URL]
,[parse]
,[Strata]
,[Id]
FROM [ExcelAnalysis].[dbo].[ClearDB] where [data]> "01.05.2017" and NOT [vl] ="mag"and NOT [vl] ="Maxximo" out c:\csv\status.txt -c -t, -T -S '+ @@servername
exec master..xp_cmdshell @sql
Run Code Online (Sandbox Code Playgroud)
但如果我使用任何字段,bcd将返回带有语法的消息.怎么做对的?