当前位置: 首页 > 面试题库 >

BCP不返回任何错误,但也不复制任何行

夹谷斌蔚
2023-03-14
问题内容

我正在尝试将.csv文件中的大量数据转储到SQL Server 2012数据库中。我没有进行数千次INSERT的工作,而是在进行调查bcp

编辑: 这是一个自动化的过程,而不是一次性的。我也没有BULK INSERT此数据库的权限。

当我尝试将数据复制到数据库中时,bcp不会返回任何错误,但实际上也不会复制任何内容-它只会返回0 rows copied。我已将其缩减为无法正常工作的最小情况。

首先,创建一个包含两列的简单表:

CREATE TABLE [dbo].[mincase](
    [key] [varchar](36) NOT NULL,
    [number] [int] NOT NULL

    PRIMARY KEY CLUSTERED 
    (
        [key] ASC
    )
    WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 40) ON [PRIMARY]
) ON [PRIMARY]

GO

然后,使用bcp来从中创建格式文件。请注意,此示例创建了一个XML格式的文件,但是对于它是XML还是本机来说都没有关系。

bcp MyDB.dbo.mincase format nul -T -n -f mincasexml.fmt -x -S .\SQLEXPRESS

现在创建一个data.csv文件,其中包含一行和两个条目,以制表符分隔。就我而言,该文件只是:

somecharacters  12345

同样,这是一个制表符,而不是两个空格,是否有尾随换行符似乎并不重要。

现在,尝试bcp与该格式文件一起使用,以从该文件中插入数据:

bcp MyDB.dbo.mincase in data.csv -f mincasexml.fmt -T -S .\SQLEXPRESS

而不是将数据复制到数据库中,我得到了:

Starting copy...

0 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 1

有人知道这是怎么回事吗?

谢谢!


问题答案:

BCP 命令通常需要一个标识符以指定BCP文件的格式模式。

  • -c指定字符(纯文本)模式
  • -n指定纯模式
  • -w指定unicode模式

在您的测试案例中,您创建的文件是纯文本文件,因此您应 在命令中的 bcp 中指定“ -c” 。

bcp MyDB.dbo.mincase in data.csv -c -T -S .\SQLEXPRESS

Microsoft建议对导入和导出使用“
-n”,以避免字段分隔符出现在列值中的问题(请参阅“字符模式和纯模式最佳实践”部分)。



 类似资料:
  • 我在HBASE有一张桌子。我和菲尼克斯一起创造的 然后我用spark填充它(我使用hortonworks shc-core连接器): 多谢帮忙。

  • 虽然我发现了和我类似的问题,但我自己也解决不了问题。 在我的'../models/user'模型中,我希望找到所有用户并将其放入数组,然后将该数组返回给控制器(在那里我将使用信息)。 下面是我的代码: 我还注意到,'console.log(test)'在'console.log(docs)'之前。我尝试将'docs'参数作为函数参数传递给'find',但没有结果。

  • 我有一个像这样的mysql表 但是我无法用这个函数检索“成人”和“儿童”的值 错误日志显示变量被正确地传递给函数: 为什么此函数返回?

  • 使用:https://github.com/mafintosh/mongojs 查找所有内容 返回用户。看起来很棒 当我试图通过用户ID查找该用户时:failed 我知道数据库里有数据。我试过用不同的键(比如名称)搜索。为什么它找不到数据?

  • 如果没有断开连接,为什么返回零?或者我还能查什么?

  • 问题内容: 我有以下代码: 该文件包含以下内容: 但是由于某种原因,每次都只返回一个空列表。 代码中可能存在愚蠢的错误或错字,但我只是找不到。提前致谢。 问题答案: 你读的文件 已经 和文件指针不是在 末尾 的文件。然后调用将不会返回数据。 仅读取一次文件: 另一种选择是在重新阅读之前先回到开头: 但这只是浪费CPU和I / O时间。 最好的办法是尝试和阅读 小 数据量,或寻求到了最后,通过采取文