J'ai une table qui ressemble à quelque chose comme ceci dans une base de données SQL Server à Azure:
CREATE TABLE [dbo].[TableName](
[col01] [int] IDENTITY(1,1) NOT NULL,
[col02] [varchar](255) NOT NULL,
[col03] [varchar](255) NOT NULL,
[col04] [datetime] NULL,
[col05] [datetime] NULL,
[col06] [nvarchar](255) NULL,
[col07] [nvarchar](max) NULL,
[col08] [nvarchar](255) NULL,
[col09] [nvarchar](max) NULL,
[col10] [int] NULL,
[col11] [nvarchar](255) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
J'ai un fichier de données qui ressemble un peu à ceci:
$ head datafile.csv
2134024,SRC001,SE,NULL,NULL,NULL,NULL,NULL,NULL,1,SRC
2134025,SRC002,SE,NULL,NULL,NULL,NULL,NULL,NULL,2,SRC
2134026,SRC003,SE,NULL,NULL,NULL,NULL,NULL,NULL,3,SRC
2134027,SRC004,SE,NULL,NULL,NULL,NULL,NULL,NULL,4,SRC
2134028,SRC005,SE,NULL,NULL,NULL,NULL,NULL,NULL,5,SRC
2134029,SRC006,SE,NULL,NULL,NULL,NULL,NULL,NULL,6,SRC
2134030,SRC007,SE,NULL,NULL,NULL,NULL,NULL,NULL,7,SRC
2134031,SRC008,SE,NULL,NULL,NULL,NULL,NULL,NULL,8,SRC
2134032,SRC009,SE,NULL,NULL,NULL,NULL,NULL,NULL,9,SRC
2134033,SRC010,SE,NULL,NULL,NULL,NULL,NULL,NULL,10,SRC
$ wc -l
713224
$
J'essaie d'importer en utilisant BCP en cours d'exécution sur mon ordinateur portable Linux:
$ bcp TableName in ./datafile.csv -S niceclouddbservername.database.windows.net -U myusername -dmydatabasename -c -t ','
Password: <I paste my password here>
Starting copy... <this takes a few seconds>
BCP copy in failed
$
Deux questions, l'une est intéressante en ce moment:
Ce que j'ai fait jusqu'à présent:
Voici comment je recommande de le faire, ce qui est adapté aux données de caractère:
les commandes correspondantes sont alors comme suit:
bcp [<my_db_name>].<my_schema_name>.<my_table_name> format nul -c -f <my_format_file_name>.fmt -t\<my_delimiter_char> -S <my_db_server> -U <my_db_user>
bcp [<my_db_name>].<my_schema_name>.<my_table_name> in <my_data_file> -f <my_format_file_name>.fmt -t\<my_delimiter_char> -b <my_batch_size> -m <my_max_errors> -e <my_error_file> -S <my_db_server> -U <my_db_user>
Ensuite, vous pouvez inspecter <my_error_file>
Pour voir comment ça s'est passé. L'exécution sans erreur devrait produire vide <my_error_file>
.