AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 93784
Accepted
Tonny
Tonny
Asked: 2015-02-26 06:47:00 +0800 CST2015-02-26 06:47:00 +0800 CST 2015-02-26 06:47:00 +0800 CST

T-SQL 批量插入在字符串数据中的特定单词“DENY”上失败 [关闭]

  • 772
关闭。这个问题跑题了。它目前不接受答案。

这个问题似乎不属于这里。它要么与数据库无关,要么与我们网站的范围发生冲突。请参阅此处我可以询问哪些主题?,我应该避免问什么类型的问题?或此博客文章以获取更多信息。

7 年前关闭。

改进这个问题

我有结构为字符串的 CSV 文件;字符串;string
第一个字符串用“”引起来。其他 2 个字符串不是。
我使用 nchar(x) 为 3 列中的每一列批量将它们插入到表中,x 的值足够大。

BULK INSERT [table] FROM 'import.csv' WITH (FIELDTERMINATOR = ';')

这已经工作了几年。
几天以来,导入在某些行上出现了问题。经过调查,每个失败的行都会在第 3 列出现转换/类型不匹配错误。
数据发生变化的是,在第 3 个字符串的中间,文本(DENY)现在出现在每个失败的行中。以前从未有过这种情况。

 Msg 4864, Level 16, State 1, Line 1
 Bulk load data conversion error (type mismatch or invalid character for the specified codepage) for row 1019, column 3 (Rights).

任何想法为什么子字符串 (DENY) 的存在会导致这种情况发生?
(我知道这是一个 SQL 保留字,但为什么要在这个位置解析它?)
如何解决它?我仍然需要导入这些行,包括该文本。

第 3 列的示例内容:

(I)(OI)(CI)(F)
(I)(OI)(CI)(DENY)(WDAC,WO,S,DC)
(I)(OI)(CI)(F)

第二行给出了错误。其他 2 个进口罚款。
(如果您想知道:是的,我正在解析的是 ICACLS 输出。)

sql-server bulk-insert
  • 1 1 个回答
  • 382 Views

1 个回答

  • Voted
  1. Best Answer
    Tonny
    2015-02-28T07:03:07+08:002015-02-28T07:03:07+08:00

    经过一些实验,我发现了以下内容:

    这个词DENY确实是转移注意力。问题是由(xx,xx,xx,xx)它背后的顺序引起的。
    如果从动态 SQL 字符串运行批量插入,由于某些不明确的原因,这会导致错误。
    (我使用的是动态 SQL,因为我需要遍历从另一个表派生的输入文件名列表。批量插入不允许对输入文件名使用变量。所以我必须以编程方式生成每个批量插入语句,然后EXEC()它。)

    如果直接运行,具有相同输入文件的批量插入工作正常。同一文件的 BCP 导入也可以。

    如果包含此序列的列不是输入行的最后一列,它将按预期工作。

    因为我可以完全控制生成这些文件的脚本,所以我可以添加一个仅包含=. 这解决了批量插入的问题。

    显然我仍然不明白这个的根本原因。至少我有一个解决方法。

    Microsoft 在 MSDN 上多次声明

    “不支持批量插入 CSV 文件,但在某些情况下可能有效”

    他们从不说为什么或确切的问题是什么......
    让我想知道我是否遇到了一个已知问题......

    • 0

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve