J'essaie de transférer les données de SQLite vers SQL Server. Le schéma de la cible et la table de destination sont les mêmes:Importer des données de SQLite vers SQL Server avec la classe SqlBulkCopy
SQL Server:
CREATE TABLE [dbo].[Shop] (
[ShopID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](128) NOT NULL,
[Url] [nvarchar](128) NOT NULL,
PRIMARY KEY CLUSTERED
(
[ShopID] ASC
))
et SQLite:
CREATE TABLE "Shop" (
"ShopID" INTEGER PRIMARY KEY NOT NULL,
"Name" VARCHAR NOT NULL,
"Url" VARCHAR NOT NULL);
j'ai écrit le code comme ci-dessous (avec System.Data.SQLite) :
using (var conn = new SQLiteConnection(@"Data Source=Data.sqlite;FailIfMissing=True"))
{
conn.Open();
var cmd = new SQLiteCommand("SELECT * FROM Shop", conn);
var reader = cmd.ExecuteReader();
using (var bulkCopy = new SqlBulkCopy("Data Source=.;Initial Catalog=Test;Integrated Security=True"))
{
bulkCopy.DestinationTableName = "Shop";
bulkCopy.ColumnMappings.Add("ShopID", "ShopID");
bulkCopy.ColumnMappings.Add("Name", "Name");
bulkCopy.ColumnMappings.Add("Url", "Url");
bulkCopy.WriteToServer(reader);
}
}
Les données ont été chargées par le lecteur (j'ai vérifié). Mais une InvalidOperationException jette sur la méthode WriteToServer: Le ColumnMapping donné ne correspond à aucune colonne dans la source ou la destination.
Des idées ou des suggestions pour moi?
Ai-je tort ou ce ColumnMappings.Add n'est pas nécessaire? Les deux tables sont identiques ... –