L'importation dans SQL Server avec le format de fichier et d'insertion en bloc

Bonjour à tous j'ai un problème difficile à résoudre avec l'aide de BULK INSERT de commande lorsque j'essaie d'importer des données depuis un fichier texte.

J'ai trouvé de nombreux articles et des exemples dans Internet au sujet de l'importation avec BULK INSERT ou BCP programme, mais ils n'aide pas à moi.

Le problème:

- Je faire de l'exportation à partir d'Oracle dans un fichier texte avec séparateur de colonne {#} et séparateur de lignes <#> et l'importer dans SQL Server.

La table (SQL Server):

CREATE TABLE my_DATA
(
ID_PK     NUMERIC(30)  NOT NULL ,
BEGIN_TIME    DATETIME  NULL ,
END_TIME      DATETIME  NULL
);

pour Oracle:

CREATE TABLE my_DATA
(
ID_PK     NUMBER(30)  NOT NULL ,
BEGIN_TIME    TIMESTAMP  NULL ,
END_TIME      TIMESTAMP  NULL
);

Le fichier avec le délimiteur est:

ID_PK{#}BEGIN_TIME{#}END_TIME<#>296167{#}01/01/2012 01:30:00.000{#}01/01/2012 02:00:00.000<#>296178{#}01/01/2012 02:00:00.000{#}01/01/2012 02:30:00.000<#>

Le format de fichier est:

9.0                         
3                           
1   SQLNUMERIC  0   19  {#} 1   ID_PK   ""
2   SQLDATETIME 0   8   {#} 2   BEGIN_TIME  ""
3   SQLDATETIME 0   8   <#> 3   END_TIME    ""

Alors quand j'ai utilisé la commande:

BULK INSERT my_DATA 
FROM 'D:\my_DATA.txt' 
WITH 
(CODEPAGE = '1251',
 FIELDTERMINATOR = '{#}', 
 FIRSTROW = 2, 
 ROWTERMINATOR = '<#>' );

Cela fonctionne, mais lorsque j'essaie d'utiliser le format de fichier ne fonctionne pas:

BULK INSERT my_DATA 
FROM 'D:\my_DATA.txt' 
WITH (CODEPAGE = '1251',
      FORMATFILE ='D:\format_file.txt');

L'erreur est:

En vrac de charge erreur de conversion de données (incompatibilité de type ou de caractère non valide
pour la page de codes spécifiée) pour la ligne 2, colonne 2 (begin_time).

J'ai cherché sur ce problème, essayez de changer datetime pour smalldate, essayez de changer la longueur de 23 ou 24. Il ne fonctionne pas. Donc, j'essaie d'importer une autre table sans date, j'utilise une colonne numérique et les colonnes de type char, mais j'ai été confrontée au même problème avec une colonne numérique:

En vrac de charge erreur de conversion de données (incompatibilité de type ou de caractère non valide
pour la page de codes spécifiée) pour la ligne 2, colonne 1 (id_pk).

table:

CREATE TABLE unit_table
(
id_pk  NUMERIC(30)  NOT NULL ,
name             NVARCHAR(200)  NULL ,
name_full        NVARCHAR(200)  NULL ,
CONSTRAINT  PK_unit_table_2C1 PRIMARY KEY (bule_biz_unit_level_id_pk)
);

format de fichier:

9.0
3
1       SQLNUMERIC    0       1      "{#}"      1     id_pk                              ""
2       SQLNCHAR      0       11     "{#}"      2     name                                              ""
3       SQLNCHAR      0       11     "{#}"      3     name_full                                         ""

Le fichier de données ne contient que 3 lignes (bulk insert de commande est le même):

ID_PK{#}NAME{#}NAME_FULL<#>1{#}factory{#}factory<#>2{#}station{#}station<#>

Il est intéressant si le fichier ne contient que les 2 rangs:

ID_PK{#}NAME{#}NAME_FULL<#>1{#}factory{#}factory<#>

Le résultat de l'instruction bulk insert est:

(0 ligne(s) affectée)

J'ai aussi essayer de faire exemple http://msdn.microsoft.com/en-us/library/ms178129.aspx mais face avec l'erreur:

Ne peut pas charger en bloc parce que le fichier "D:\myTest.txt" ne peut pas être lu.
Système d'exploitation code d'erreur (null).

Et la dernière, j'ai essayé de l'utiliser avec bcp programme et le visage avec trop d'erreurs.

Quelqu'un peut m'aider avec mon problème ou me donner au moins un exemple de travail avec insertion en bloc et fichier de format.

P. S.-je utiliser MS SQL Server 2005 mise à jour à la dernière version. L'OS est Windows 7 x64.

Êtes-vous essayer de sauter toutes les colonnes dans votre source de données? En dépit d'être en mesure de nommer les colonnes dans le fichier de format, je ne pense pas que c'est important (je peux me tromper). Il s'appuie sur la position de la colonne. J'ai eu la meilleure chance à l'aide de fichiers de format XML et la openrowset méthode.

OriginalL'auteur Cherry | 2012-03-06