Je reçois cette erreur
Bulk load data conversion error (truncation) for row 1, column 12 (is_download)
voici le csv ... il n'a qu'une rangée
30,Bill,Worthy,sales,,709888499,[email protected],,"Im a a people person., to work together for this new emerging env.HTTP://applesoftware.com","Bill and Son of Co","Contact Us: Contact Form",0
voici ma déclaration d'insertion en vrac ...
SE SalesLogix
GO
CREATE TABLE CSVTemp
(id INT,
firstname VARCHAR(255),
lastname VARCHAR(255),
department VARCHAR(255),
architecture VARCHAR(255),
phone VARCHAR(255),
email VARCHAR(255),
download VARCHAR(255),
comments VARCHAR(MAX),
company VARCHAR(255),
location VARCHAR(255),
is_download VARCHAR(255)
)
GO
BULK
INSERT CSVTemp
FROM 'c:\leads\leads.csv'
WITH
(
DATAFILETYPE = 'char',
BATCHSIZE = 50,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
--Check the content of the table.
SELECT *
FROM CSVTemp
GO
Le problème est que la plupart du temps cela fonctionne très bien, mais dans certaines situations (celle-ci étant l'une d'entre elles), je reçois les erreurs
Toutes les idées sur ce qui cause cette erreur à cet enregistrement
Il s'agit de séparer les virgules dans le champ de commentaires en tant que délimiteurs, car ceux-ci ne sont pas cohérents. La meilleure solution consiste à s'assurer que tous les champs sont entourés de guillemets doubles et que FIELDTERMINATOR
est défini sur '","'
. Alternativement, remplacez les virgules par quelque chose d'inhabituel dans les commentaires (comme ~
) et définissez FIELDTERMINATOR = '~'
.
En plus des commentaires de Wil, il semble que les 12 colonnes apparaissent, il se peut donc que votre rowterminator soit incorrect. Tout d’abord, assurez-vous que le programme qui rassemble ces fichiers place bien un retour à la fin de la dernière ligne; J'ai dû corriger de nombreux programmes où ce n'était pas le cas. Une fois que vous êtes sûr qu'il y a un retour chariot, vous devrez peut-être faire des essais pour voir de quel type de retour chariot il s'agit. Parfois, il s'agit uniquement de char (10), parfois de char (13), et parfois, il peut avoir les deux mais être dans le mauvais ordre. Alors expérimentez avec:
ROWTERMINATOR = '\n'
ROWTERMINATOR = '\r'
ROWTERMINATOR = '\n\r'
ROWTERMINATOR = '\r\n'
System.Data.SqlClient.SqlException (0x80131904): Erreur de conversion des données de chargement en bloc (troncature) pour la ligne 97, colonne 33
Pour l'erreur ci-dessus, vous pouvez vérifier