我正在尝试使用SQL Server bcp实用程序从samba共享导入文本文件.bcp在Unix行结尾时窒息.我确信我可以在Unix或Windows上添加一个中间步骤,将行结尾更改为Windows风格.但我更愿意从Unix导入文件而不进行修改.
有人知道是否有办法告诉SQL Server bcp寻找Unix行结尾?
如果我有一个带索引的空表并且我执行bcp,SQL Server(内部)是否删除/禁用索引,加载数据然后重新应用/启用/构建索引?
我有一个远程SQL Server,其中包含我用来连接的主机名.
BCP建议使用
bcp DBName.dbo.tablename in C:\test\yourfile.txt -c -T -t
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试此操作时,它不会连接到DBName,因为它不是有效的别名.我得到原生错误2.
如何运行BCP但指定要连接的Internet /网络地址,而不是MSSQL服务器名称?
我在 SQL Server 2008 R2 的表中获取了数据,并尝试将其输出到 CSV 文件。然后,我必须将此 CSV 文件导入第三方专有系统,该系统要求将此文件编码为 ISO-8859-1。特别是,我们得到了一些带有“\xc5\xa0”字符的值,它是 Windows-1252 中的代码点 8A,但没有出现在 ISO-8859-1 中。我想消除/修复这些字符(以及ISO 标准中未出现的所有其他 8_ 和 9_ 代码点),而无需手动修改文件。完全使用 SQL 或使用 BCP 参数来完成此操作将是理想的选择。
\n\n我能得到的最接近的 BCP 是使用 Windows-1252:
\n\nbcp tableName out outputFile.csv -c -C 1252 -t, -S server -T\nRun Code Online (Sandbox Code Playgroud)\n\n是否有一个代码页可以给 BCP 来输出 ISO-8859-1?或者我可以应用于表格的排序规则?现在它们正在与 进行整理SQL_Latin1_General_CP1_CI_AS,但我认为这只是我们的默认设置或者是有点任意应用的。
我正在尝试使用 bcp 实用程序将我所有数据库表的列名导出到一个 csv 文件,以便稍后将表中的数据合并到一个文件中,并将检索到的列名作为文件中的标题。
我已经复制了这个问题的答案中的代码:export table to file with column headers (column names) using the bcp utility and SQL Server 2008。但是我收到此错误:
消息 214,级别 16,状态 201,过程 xp_cmdshell,第 1 行过程需要类型为“varchar”的参数“no_output”。
这是我的代码:
DECLARE @var NVARCHAR(MAX)
DECLARE curRunning
CURSOR LOCAL FAST_FORWARD FOR
SELECT name FROM sysobjects WHERE type = 'U'
OPEN curRunning
FETCH NEXT FROM curRunning INTO @var
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @Exec2 NVARCHAR(MAX),@sql1 VARCHAR(1000)
SET @sql1 ='"DECLARE @colnames VARCHAR(max);SELECT @colnames= COALESCE(@colnames + '+''','''+' , '''') + column_name from …Run Code Online (Sandbox Code Playgroud) 我对bcp很新,但我研究了很多,找不到任何资源,说明我们实际上是用这个命令将用户名和密码发送到数据库的.那么每个人都可以访问数据库?
bcp AdventureWorks2008.HumanResources.Employee out C:\Data\EmployeeData.dat -T
Run Code Online (Sandbox Code Playgroud) 我的.bcp文件来自SQL Server 2016.
当我bcp在SQL Server 2008 R2中尝试时,发生了错误:
SQLState = 37000,NativeError = 2812
错误= [Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]找不到存储过程'sp_describe_first_result_set'
谁能给我一些想法?
我正在编写一个Windows批处理文件,batch file应该在特定文件夹中输出一个文件。我希望文件名写成如下:
filename-yyyymmdd.csv
Run Code Online (Sandbox Code Playgroud)
其中 yyyymmdd 代表当前日期。
我的batch file代码如下:
cd:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn
bcp "SELECT TOP 100 * FROM xxxx.dbo.xxxxx" queryout c:\test\csv\confirmed.csv -t, -c -S xxxx\xxxxx -U xxx -P xxxxxxxxxx
set mydate=%date:~10,4%%date:~4,2%%date:~7,2%
echo %mydate%
copy c:\test\csv\confirmed.csv c:\test\csvwithdates\confirmed-%mydate%.csv
Run Code Online (Sandbox Code Playgroud)
我得到以下文件名作为输出: confirmed-ay18.csv
期望的输出: confirmed-20180528.csv
我查看了以下问题,StackOverflow但我很难实施建议的答案:
在 Windows 批处理文件中以 YYYYMMDD 格式获取日期
我究竟做错了什么?
我开发了一个 CSV 批处理编写器。但与 BCP 相比,这个过程似乎相当缓慢。我唯一的要求是将没有标识或主键列的大表导出到多个小型 CSV 文件中,并使用相应的批处理 ID 命名它们。
BCP 的问题是它只会写入单个大文件。
我当前的流程所做的是:读取数据并使用 CSV 编写器写入内存流我不断检查内存流是否大于特定的批处理大小,然后我将异步复制内存流写入文本文件。
如果没有内存不足的异常,我可以导出批量大小为 250MB 的文件
但这个过程比 BCP 导出要多花 5 倍的时间。
有没有比我正在做的更好的方法来实现批量导出到 CSV。
请指教。
bcp ×10
sql-server ×9
batch-file ×1
bulk-load ×1
c# ×1
csv ×1
csvhelper ×1
database ×1
date ×1
indexing ×1
iso-8859-1 ×1
line-endings ×1
performance ×1
sql ×1
windows ×1