我熟悉 bcp 实用程序,我有一个包含日期时间数据的大表,我以多种方式 bcp 输出它:本机、字符、分隔。
然后我 bcp 到一个与原始表具有相同列/格式的截断表中,但是,我得到如下错误:
----------------
Starting copy...
SQLState = 22008, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]Invalid time format
SQLState = 22008, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]Invalid time format
SQLState = 22008, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]Invalid time format
SQLState = 22008, NativeError = 0
Error = [Microsoft][SQL Server Native Client 10.0]Invalid date format
SQLState = 22008, NativeError = 0
Error = [Microsoft][SQL …Run Code Online (Sandbox Code Playgroud) 我有一个需要批量导入的 varbinary(max) 列。我放入此列的数据是 C# 中的 byte[]。如何格式化用于批量导入的逗号分隔文件中的数据?换句话说,如何以 bcp 实用程序接受的方式从 byte[] 转换为字符串?
我正在与需要将数据导入远程 SQL Server (2008) 实例的客户合作。将在其中进行导入的计算机上不能安装 SQL Server。BCP.exe 实用程序可以在没有安装 SQL Server 的情况下运行吗?
谢谢你的帮助。
我正在使用 Windows 10 并直接从命令提示符(管理员)运行它。有没有办法改变输出到文本文件的行数?
BCP "SELECT * FROM db.dbo.table WHERE row_date = '2016-10-11'" queryout "C:/Users/table.csv" -t, -c -S "servername" -T
1000 rows successfully bulk-copied to host-file. Total received: 1000
1000 rows successfully bulk-copied to host-file. Total received: 2000
1000 rows successfully bulk-copied to host-file. Total received: 3000
1000 rows successfully bulk-copied to host-file. Total received: 4000
1000 rows successfully bulk-copied to host-file. Total received: 5000
1000 rows successfully bulk-copied to host-file. Total received: 6000
12136 rows copied.
Network packet size …Run Code Online (Sandbox Code Playgroud) 我正在使用 SQL Server 2017,并希望在脚本中使用“bcp in”来填充多个数据库中的表。我无法将数据导入到具有索引视图的表中。以下是重现我的问题的 MCVE:
运行本文末尾的脚本,用两个表、一个索引视图和一些数据填充测试数据库。
运行bcp out将表Table1中的测试数据导出到文件中:
bcp [dbo].[Table1] out .\Table1.bcp -S "localhost" -d TestDB -T -k -N
Run Code Online (Sandbox Code Playgroud)
DELETE FROM [dbo].[Table1]
Run Code Online (Sandbox Code Playgroud)
bcp [dbo].[Table1] in .\Table1.bcp -S "localhost" -d TestDB -T -k -N
Run Code Online (Sandbox Code Playgroud)
结果:失败并显示错误消息INSERT failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'...
注意:如果我在视图上删除索引 [ix_v1],这将会成功:仅当表被索引视图引用时才会出现该问题。
bcp [dbo].[Table1] in .\Table1.bcp -S "localhost" -d TestDB -T -k -N -q
Run Code Online (Sandbox Code Playgroud)
结果:失败并显示错误消息Invalid object …
我的机器没有安装完整的 SQL Server。我的机器上安装了以下可分发的软件包:-
我有一个运行 bcp 实用程序的批处理文件。如果我从 bcp.exe 所在的文件夹(...tools\binn)运行这个批处理文件,它就可以工作。
我的转储问题是是否有任何方法可以仅从 c:\ 驱动器运行 bcp 实用程序。现在,如果它从 c:\ drive 运行,它会说:-
bcp 不被识别为内部或外部命令,..
我有一个纯文本数据文件,其中包含由不可打印字符"File Separator" (0x1c) 分隔的字段的记录。我正在尝试使用 SQL Server 的 bcp 实用程序将此数据加载到我的数据库中。然而,当使用文件分隔符的十六进制编码值作为 TERMINATOR 时,出现语法错误。
我试过使用
"0x1c"""""这些都不起作用,但是当对可打印字符使用相同的编码时,例如tab,这确实有效:	, 	(0x9没有。不足为奇,因为这是一个 XML 文件。)
结论似乎是不支持不可打印的字符。是这种情况吗?这将是具有讽刺意味的,因为不可打印的分隔符正是为此目的而创建的......
您可以在下面找到重现此问题的所有代码:
XML 格式文件:test.xml
<?xml version="1.0"?>
<BCPFORMAT xmlns="http://schemas.microsoft.com/sqlserver/2004/bulkload/format" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<RECORD>
<FIELD ID="1" xsi:type="CharTerm" TERMINATOR="" MAX_LENGTH="10" COLLATION="Latin1_General_CS_AS_WS"/>
<FIELD ID="2" xsi:type="CharTerm" TERMINATOR="\r\n" MAX_LENGTH="41"/>
</RECORD>
<ROW>
<COLUMN SOURCE="1" NAME="COL1" xsi:type="SQLVARYCHAR"/>
<COLUMN SOURCE="2" NAME="COL2" xsi:type="SQLNUMERIC" PRECISION="4" SCALE="0"/>
</ROW>
</BCPFORMAT>
Run Code Online (Sandbox Code Playgroud)
数据文件:test.txt
这只是一行,作为一个测试用例。StackExchange 不会在下面的行中显示分隔符,但是当您单击此帖子的“编辑”时,分隔符已包含在内,您应该能够复制粘贴它。
1111111112008
Run Code Online (Sandbox Code Playgroud)
命令行
bcp TEST_DB.dbo.UL_TEST in "test.txt" -T -f "test.xml"
Run Code Online (Sandbox Code Playgroud) 我正在通过 BCP 创建一些报告以通过电子邮件发送。
create TABLE ##tempsss
(
create TABLE ##JOB_DataAssociacao_verContrato
(
F1 VARCHAR(6)
,F2 VARCHAR(200)
,F3 VARCHAR(22)
,F4 char(1)
,F5 varchar(10)
,F6 varchar(15)
,F7 varchar(30)
,F8 varchar(10)
,F9 VARCHAR(18)
) --it needs to be varchar to be able to use header
)
insert into ##tempsss
SELECT
...fields...
FROM some table or view
go
-------------------------------------------------------------
--passo 2 --
exec xp_cmdshell 'bcp "select ''field1'',''field2'',''field3'' UNION ALL select * from table or view" queryout "filepath\filename.xls" -U sa -P password -w -S servername'
------------------------------------------------------------- …Run Code Online (Sandbox Code Playgroud) 我想将三个相关表导出到文件。这三个表相互之间存在关系。有没有一种好方法可以以事务一致的方式 bcp 导出这些表?
我DBCC CHECKDB在 SQL Server 2014 上已损坏行的表上运行时遇到一致性错误。在前 30,000 行(总计 140 万(140 万)行)之后,我遇到了损坏错误。
我想尝试bcp将数据取出,直到损坏为止。我想跳过损坏的行。我想bcp在损坏范围之后并尽量减少数据丢失。
我该怎么做?请详细说明。
另请参阅我之前的问题:在 SQL Server 2014 中的几个表上运行 CHECKDB 的一致性错误
我有一个包含数亿行的大型平面文件。我只想插入其中的前 1000 个。我怎样才能做到这一点?