我正在尝试将文件从 UNIX 加载到 SQL Server。当我运行 BCP 时出现以下错误,但当我将数据类型更改为 Char 时,我能够加载相同的文件。
使用的命令:
--bcp [SQLAAA].[APP_XXX].[ACTIVITY_V1] in /home/XXX_ACTIVITY.txt -c -S xddb001 -e /home/ERRORS.log -t "|" -r "\n" -U test12 -P test12
源文件:
222|2017-12-27|Y|ABC|2017-12-27|ABC|2017-12-27
255|2018-01-04|N|ABC|2018-01-04|ABC|2018-01-04
错误信息:
@ 第 1 行,第 7 列:强制转换规范 @ 的字符值无效
定义表:
CREATE TABLE [APP_XX].[ACTIVITY]
(
[C1] [varchar](10) NOT NULL,
[C2_DATE] [date] NOT NULL,
[c3] [varchar](1) NULL,
[C4_NM] [varchar](10) NULL,
[C5_DTM] [date] NULL,
[C6_NM] [varchar](10) NULL,
[C7_DTM] [date] NULL,
[ROW_ID] [bigint] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]
您能告诉我可以进行哪些修改吗?
导入到包含 IDENTITY 列的表时,如果您没有在导入文件中提供 IDENTITY 列的值,则需要在格式文件中指定在导入中将跳过 IDENTITY 列。
这种工作方式在关于 BCP 的 Microsoft 文档,标志 -E https://learn.microsoft.com/en-us/sql/tools/bcp-utility#E:
如果数据文件不包含表或视图中的标识列的值,请使用格式文件指定导入数据时应跳过表或视图中的标识列; SQL Server 自动为列分配唯一值。[...]
你需要做什么:
- First 使用 BCP 创建格式文件 https://learn.microsoft.com/en-us/sql/relational-databases/import-export/create-a-format-file-sql-server。例如。对于非 XML 格式文件,命令如下所示
BCP table_or_view format nul -f format_file_name
- 指定跳过格式文件中的 IDENTITY 列
- 使用您在中创建的格式文件
BCP IN
命令使用BCP -f flag https://learn.microsoft.com/en-us/sql/tools/bcp-utility#f
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)