gpt4 book ai didi

sql - BCP/批量插入失败(制表符分隔文件)

转载 作者:行者123 更新时间:2023-12-02 01:08:01 26 4
gpt4 key购买 nike

我一直在尝试将数据(制表符分隔)导入 SQL 服务器。源数据是从 IBM Cognos 导出的。数据下载地址:sample data

我试过 BCP/Bulk Insert,但没有用。原始数据文件包含标题行(需要跳过)。

==================================架构:

CREATE TABLE [dbo].[DIM_Assessment](
[QueryType] [nvarchar](4000) NULL,
[QueryDate] [nvarchar](4000) NULL,
[APUID] [nvarchar](4000) NULL,
[AssessmentID] [nvarchar](4000) NULL,
[ICDCode] [nvarchar](4000) NULL,
[ICDName] [nvarchar](4000) NULL,
[LoadDate] [nvarchar](4000) NULL
) ON [PRIMARY]
GO

=============================使用以下命令生成的格式化文件

bcp [dbname].dbo.dim_assessment format nul -c -f C:\config\dim_assessment.Fmt -S <IP>  -U sa -P Pwd

格式文件的内容:

11.0
7
1 SQLCHAR 0 8000 "\t" 1 QueryType SQL_Latin1_General_CP1_CI_AS
2 SQLCHAR 0 8000 "\t" 2 QueryDate SQL_Latin1_General_CP1_CI_AS
3 SQLCHAR 0 8000 "\t" 3 APUID SQL_Latin1_General_CP1_CI_AS
4 SQLCHAR 0 8000 "\t" 4 AssessmentID SQL_Latin1_General_CP1_CI_AS
5 SQLCHAR 0 8000 "\t" 5 ICDCode SQL_Latin1_General_CP1_CI_AS
6 SQLCHAR 0 8000 "\t" 6 ICDName SQL_Latin1_General_CP1_CI_AS
7 SQLCHAR 0 8000 "\r\n" 7 LoadDate SQL_Latin1_General_CP1_CI_AS

=============================

我尝试使用 BCP/Bulk Insert 导入数据,但是,它们都不起作用。

bcp [dbname].dbo.dim_assessment IN C:\dim_assessment.dat -f C:\config\dim_assessment.Fmt -S <IP>  -U sa -P Pwd

BULK INSERT dim_assessment FROM '\\dbserver\DIM_Assessment.dat'
WITH (
DATAFILETYPE = 'char',
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\r\n'
);
GO

提前感谢您的帮助@

最佳答案

您的输入文件格式很糟糕。

您的格式文件和您的BULK INSERT 命令都声明一行的末尾应该是回车符和换行符的组合,并且有七列数据。但是,如果您在记事本中打开 CSV 文件,您很快就会发现在 Windows 中无法正确观察到回车符和换行符(这意味着它们一定不是精确的 \r\n)。您还可以看到实际上没有七列数据,而是五列:

QueryType   QueryDate   APUID   AssessmentID    ICDCode ICDName LoadDate
PPIC 2013-11-20 10:23:14 11431 10963 Tremors
PPIC 2013-11-20 10:23:14 11431 11299 THUMB PAIN
PPIC 2013-11-20 10:23:14 11431 11348 Environmental allergies
...

Just looking at it visually you can tell it isn't right ,并且您需要先获得更好的源文件,然后再将其扔到 SQL Server 上并期望它能够顺利处理:

enter image description here

关于sql - BCP/批量插入失败(制表符分隔文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20481825/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com