Bulk insert

Le
Philippe
bonjour à tous,

je patine sur l'utilisation de bulk insert à partir d'un fichier txt , voilà
mon problème:

j'ai créé une table:
/****** Objet : Table [dbo].[Résidences] Date de génération du script :
01/14/2008 17:03:04 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[Résidences]') AND type in (N'U'))
DROP TABLE [dbo].[Résidences]
GO
CREATE TABLE [dbo].[Résidences](
[résidence] [nvarchar](64) NOT NULL,
[résidenceId] [bigint] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_Résidences_1] PRIMARY KEY CLUSTERED
([résidenceId] ASC)
WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Objet : Index [IX_Résidences] Date de génération du script :
01/14/2008 16:41:35 ******/
CREATE NONCLUSTERED INDEX [IX_Résidences] ON [dbo].[Résidences]
([résidence] ASC)
WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF,
DROP_EXISTING = OFF,
ONLINE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
GO


le contenu du fichier TXT : BAB Résidences.txt est le suivant :
IIIIIIIIIIII I I
IIII IIIIIII I
1929
2
2 MAISONS

chaque ligne se termine par CRLF
Je n'ai pas de caractère de split particulier si ce n'est la fin de chaque
ligne

j'ai essayé :
BULK INSERT cabab.dbo.Résidences
FROM 'D:BAB Résidences.txt'
WITH (
FIELDTERMINATOR = '',
ROWTERMINATOR = ''
)
GO

j'obtiens tout en erreur :
Msg 4864, Niveau 16, État 1, Ligne 1
Erreur de conversion des données à charger en bloc (incompatibilité de type
ou caractère non valide pour la page de codes spécifiée) pour la ligne 1,
colonne 2 (résidenceId).
Msg 4864, Niveau 16, État 1, Ligne 1
Erreur de conversion des données à charger en bloc (incompatibilité de type
ou caractère non valide pour la page de codes spécifiée) pour la ligne 3,
colonne 2 (résidenceId).
Msg 4864, Niveau 16, État 1, Ligne 1
Erreur de conversion des données à charger en bloc (incompatibilité de type
ou caractère non valide pour la page de codes spécifiée) pour la ligne 4,
colonne 2 (résidenceId).
etc

Quelle(s) caractère(s) dois je indiquer pour charger la table?? , le
contenu d'une ligne du fichier texte (hors CRLF) alimente la colonne
"Résidence" de la table

D'avance merci
Philippe
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jean-Pierre Riehl
Le #11883821
Bonjour,

Tu dois utiliser l'option FORMATFILE pour préciser les colonnes que tu
importes du fichier.

BULK INSERT [résidences]
FROM 'c:data.txt'
WITH (
FORMATFILE='c:format.fmt')

avec dans le fichier format :

------
9.0
1
1 SQLCHAR 0 0 "rn" 1 col1 "<collation>"
------

Consultes "BULK INSERT - format files" dans l'aide de SQL Server pour plus
de détails.


--
Jean-Pierre Riehl
http://www.blog.djeepy1.net
http://www.bewise.fr


"Philippe" news:
bonjour à tous,

je patine sur l'utilisation de bulk insert à partir d'un fichier txt ,
voilà mon problème:

j'ai créé une table:
/****** Objet : Table [dbo].[Résidences] Date de génération du script :
01/14/2008 17:03:04 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[Résidences]') AND type in (N'U'))
DROP TABLE [dbo].[Résidences]
GO
CREATE TABLE [dbo].[Résidences](
[résidence] [nvarchar](64) NOT NULL,
[résidenceId] [bigint] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_Résidences_1] PRIMARY KEY CLUSTERED
([résidenceId] ASC)
WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Objet : Index [IX_Résidences] Date de génération du script :
01/14/2008 16:41:35 ******/
CREATE NONCLUSTERED INDEX [IX_Résidences] ON [dbo].[Résidences]
([résidence] ASC)
WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF,
DROP_EXISTING = OFF,
ONLINE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
GO


le contenu du fichier TXT : BAB Résidences.txt est le suivant :
IIIIIIIIIIII I I
IIII IIIIIII I
1929
2
2 MAISONS

chaque ligne se termine par CRLF
Je n'ai pas de caractère de split particulier si ce n'est la fin de chaque
ligne

j'ai essayé :
BULK INSERT cabab.dbo.Résidences
FROM 'D:BAB Résidences.txt'
WITH (
FIELDTERMINATOR = 'n',
ROWTERMINATOR = 'n'
)
GO

j'obtiens tout en erreur :
Msg 4864, Niveau 16, État 1, Ligne 1
Erreur de conversion des données à charger en bloc (incompatibilité de
type ou caractère non valide pour la page de codes spécifiée) pour la
ligne 1, colonne 2 (résidenceId).
Msg 4864, Niveau 16, État 1, Ligne 1
Erreur de conversion des données à charger en bloc (incompatibilité de
type ou caractère non valide pour la page de codes spécifiée) pour la
ligne 3, colonne 2 (résidenceId).
Msg 4864, Niveau 16, État 1, Ligne 1
Erreur de conversion des données à charger en bloc (incompatibilité de
type ou caractère non valide pour la page de codes spécifiée) pour la
ligne 4, colonne 2 (résidenceId).
etc...

Quelle(s) caractère(s) dois je indiquer pour charger la table?? , le
contenu d'une ligne du fichier texte (hors CRLF) alimente la colonne
"Résidence" de la table

D'avance merci
Philippe



Philippe
Le #11883801
Merci beaucoup,
j'ai effectivement trouvé dans la doc SQL la description d'un fichier
format.
Je n'y avais pas prété attention.

Philippe


"Jean-Pierre Riehl" news:
Bonjour,

Tu dois utiliser l'option FORMATFILE pour préciser les colonnes que tu
importes du fichier.

BULK INSERT [résidences]
FROM 'c:data.txt'
WITH (
FORMATFILE='c:format.fmt')

avec dans le fichier format :

------
9.0
1
1 SQLCHAR 0 0 "rn" 1 col1 "<collation>"
------

Consultes "BULK INSERT - format files" dans l'aide de SQL Server pour plus
de détails.


--
Jean-Pierre Riehl
http://www.blog.djeepy1.net
http://www.bewise.fr


"Philippe" news:
bonjour à tous,

je patine sur l'utilisation de bulk insert à partir d'un fichier txt ,
voilà mon problème:

j'ai créé une table:
/****** Objet : Table [dbo].[Résidences] Date de génération du script :
01/14/2008 17:03:04 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[Résidences]') AND type in (N'U'))
DROP TABLE [dbo].[Résidences]
GO
CREATE TABLE [dbo].[Résidences](
[résidence] [nvarchar](64) NOT NULL,
[résidenceId] [bigint] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_Résidences_1] PRIMARY KEY CLUSTERED
([résidenceId] ASC)
WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Objet : Index [IX_Résidences] Date de génération du script :
01/14/2008 16:41:35 ******/
CREATE NONCLUSTERED INDEX [IX_Résidences] ON [dbo].[Résidences]
([résidence] ASC)
WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF,
DROP_EXISTING = OFF,
ONLINE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
GO


le contenu du fichier TXT : BAB Résidences.txt est le suivant :
IIIIIIIIIIII I I
IIII IIIIIII I
1929
2
2 MAISONS

chaque ligne se termine par CRLF
Je n'ai pas de caractère de split particulier si ce n'est la fin de
chaque ligne

j'ai essayé :
BULK INSERT cabab.dbo.Résidences
FROM 'D:BAB Résidences.txt'
WITH (
FIELDTERMINATOR = 'n',
ROWTERMINATOR = 'n'
)
GO

j'obtiens tout en erreur :
Msg 4864, Niveau 16, État 1, Ligne 1
Erreur de conversion des données à charger en bloc (incompatibilité de
type ou caractère non valide pour la page de codes spécifiée) pour la
ligne 1, colonne 2 (résidenceId).
Msg 4864, Niveau 16, État 1, Ligne 1
Erreur de conversion des données à charger en bloc (incompatibilité de
type ou caractère non valide pour la page de codes spécifiée) pour la
ligne 3, colonne 2 (résidenceId).
Msg 4864, Niveau 16, État 1, Ligne 1
Erreur de conversion des données à charger en bloc (incompatibilité de
type ou caractère non valide pour la page de codes spécifiée) pour la
ligne 4, colonne 2 (résidenceId).
etc...

Quelle(s) caractère(s) dois je indiquer pour charger la table?? , le
contenu d'une ligne du fichier texte (hors CRLF) alimente la colonne
"Résidence" de la table

D'avance merci
Philippe






Philippe
Le #11883721
bonsoir ,
malgré les lectures indiquées sur format, je n'y suis pas arrivé.

Le pourquoi de l'utilisation de ce bulk insert est lié àSql Express qui n'a
pas les options d'importation comme dans la version std.

Cependant à force de chercher j'ai fini par trouver sur la version de sql
express que je possede l'outil d'importation "dtswizard" à l'adresse
C:Program FilesMicrosoft SQL Server90DTSBinn . et qui permet d'impoter
un fichier text "flat file'
la version de sql Express que j'utilise est "Microsoft SQL Server
Management Studio Express 9.00.3042.00 " version Advanced

cela a réglé mon problème.

Philippe


"Jean-Pierre Riehl" news:
Bonjour,

Tu dois utiliser l'option FORMATFILE pour préciser les colonnes que tu
importes du fichier.

BULK INSERT [résidences]
FROM 'c:data.txt'
WITH (
FORMATFILE='c:format.fmt')

avec dans le fichier format :

------
9.0
1
1 SQLCHAR 0 0 "rn" 1 col1 "<collation>"
------

Consultes "BULK INSERT - format files" dans l'aide de SQL Server pour plus
de détails.


--
Jean-Pierre Riehl
http://www.blog.djeepy1.net
http://www.bewise.fr


"Philippe" news:
bonjour à tous,

je patine sur l'utilisation de bulk insert à partir d'un fichier txt ,
voilà mon problème:

j'ai créé une table:
/****** Objet : Table [dbo].[Résidences] Date de génération du script :
01/14/2008 17:03:04 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id =
OBJECT_ID(N'[dbo].[Résidences]') AND type in (N'U'))
DROP TABLE [dbo].[Résidences]
GO
CREATE TABLE [dbo].[Résidences](
[résidence] [nvarchar](64) NOT NULL,
[résidenceId] [bigint] IDENTITY(1,1) NOT NULL,
CONSTRAINT [PK_Résidences_1] PRIMARY KEY CLUSTERED
([résidenceId] ASC)
WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Objet : Index [IX_Résidences] Date de génération du script :
01/14/2008 16:41:35 ******/
CREATE NONCLUSTERED INDEX [IX_Résidences] ON [dbo].[Résidences]
([résidence] ASC)
WITH (
PAD_INDEX = OFF,
STATISTICS_NORECOMPUTE = OFF,
SORT_IN_TEMPDB = OFF,
IGNORE_DUP_KEY = OFF,
DROP_EXISTING = OFF,
ONLINE = OFF,
ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]
GO


le contenu du fichier TXT : BAB Résidences.txt est le suivant :
IIIIIIIIIIII I I
IIII IIIIIII I
1929
2
2 MAISONS

chaque ligne se termine par CRLF
Je n'ai pas de caractère de split particulier si ce n'est la fin de
chaque ligne

j'ai essayé :
BULK INSERT cabab.dbo.Résidences
FROM 'D:BAB Résidences.txt'
WITH (
FIELDTERMINATOR = 'n',
ROWTERMINATOR = 'n'
)
GO

j'obtiens tout en erreur :
Msg 4864, Niveau 16, État 1, Ligne 1
Erreur de conversion des données à charger en bloc (incompatibilité de
type ou caractère non valide pour la page de codes spécifiée) pour la
ligne 1, colonne 2 (résidenceId).
Msg 4864, Niveau 16, État 1, Ligne 1
Erreur de conversion des données à charger en bloc (incompatibilité de
type ou caractère non valide pour la page de codes spécifiée) pour la
ligne 3, colonne 2 (résidenceId).
Msg 4864, Niveau 16, État 1, Ligne 1
Erreur de conversion des données à charger en bloc (incompatibilité de
type ou caractère non valide pour la page de codes spécifiée) pour la
ligne 4, colonne 2 (résidenceId).
etc...

Quelle(s) caractère(s) dois je indiquer pour charger la table?? , le
contenu d'une ligne du fichier texte (hors CRLF) alimente la colonne
"Résidence" de la table

D'avance merci
Philippe






Publicité
Poster une réponse
Anonyme