Тип данных фрейма данных "int" не совпадает с sql "bigint" при попытке массовой вставки - PullRequest
0 голосов
/ 15 марта 2019

У меня такая ситуация. Мне нужно экспортировать кадр данных в CSV, а затем импортировать его в базу данных сервера SQL, используя массовую вставку.

Проблема возникает, когда я пытаюсь выполнить импорт в базу данных. Ошибка одной из ее строк:

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

Я решил проблемы других типов в других столбцах, преобразовав их в string, в int или float, где это необходимо. Но в столбце engagementId нет возможности избежать ошибки. Столбец SQL имеет тип bigint и является его первичным ключом с другим столбцом.

Кто-то может помочь мне попробовать что-то другое, чтобы решить это?

Создание сценария таблицы:

USE [Table_Name] GO

/****** Object:  Table [LivePerson].[Interaction]    Script Date: 3/11/2019 1:35:49 PM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [LivePerson].[Interaction](
    [accountId] [nvarchar](max) NULL,
    [agentDeleted] [bit] NULL,
    [agentFullName] [nvarchar](max) NULL,
    [agentGroupId] [bigint] NULL,
    [agentGroupName] [nvarchar](max) NULL,
    [agentId] [nvarchar](max) NULL,
    [agentLoginName] [nvarchar](max) NULL,
    [agentNickName] [nvarchar](max) NULL,
    [alertedMCS] [bigint] NULL,
    [campaignId] [bigint] NULL,
    [channel] [bigint] NULL,
    [chatDataEnriched] [bit] NULL,
    [chatMCS] [bigint] NULL,
    [chatRequestedTime] [nvarchar](max) NULL,
    [chatRequestedTimeL] [bigint] NULL,
    [chatStartPage] [nvarchar](max) NULL,
    [chatStartUrl] [nvarchar](max) NULL,
    [duration] [nvarchar](max) NULL,
    [ended] [nvarchar](5) NULL,
    [endReason] [nvarchar](max) NULL,
    [endReasonDesc] [nvarchar](max) NULL,
    [endTime] [nvarchar](max) NULL,
    [endTimeL] [bigint] NULL,
    [engagementId] [bigint] NOT NULL,
    [engagementSequence] [bigint] NULL,
    [engagementSet] [bigint] NULL,
    [interactive] [bit] NULL,
    [isAgentSurvey] [bit] NULL,
    [isInteractive] [bit] NULL,
    [isPartial] [bit] NULL,
    [isPostChatSurvey] [bit] NULL,
    [isPreChatSurvey] [bit] NULL,
    [mcs] [bigint] NULL,
    [sharkEngagementId] [nvarchar](max) NULL,
    [skillId] [bigint] NULL,
    [skillName] [nvarchar](max) NULL,
    [startReason] [nvarchar](max) NULL,
    [startReasonDesc] [nvarchar](max) NULL,
    [startTime] [nvarchar](max) NULL,
    [startTimeL] [bigint] NOT NULL,
    [visitorId] [nvarchar](max) NULL,
    [visitorName] [nvarchar](max) NULL,
 CONSTRAINT [PK_Interaction] PRIMARY KEY CLUSTERED 
(
    [engagementId] ASC,
    [startTimeL] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

ALTER TABLE [LivePerson].[Interaction]  WITH CHECK ADD  CONSTRAINT [FK_Interaction_Campaign] FOREIGN KEY([campaignId])
REFERENCES [LivePerson].[Campaign] ([campaignId])
GO

ALTER TABLE [LivePerson].[Interaction] CHECK CONSTRAINT [FK_Interaction_Campaign]
GO

вывод данных csv:

interactions - это фрейм данных.

 interactions['engagementId'][0]
    459475934298459124

 interactions['engagementId'][0].__class__
    <class 'numpy.int64'>

Я пытался

interactions['engagementId'].astype(int)
interactions['engagementId'].astype(numpy.int32)
interactions['engagementId'].astype(numpy.int64)

Спасибо.

...