J'ai le SQL ci-dessous qui essaie d'insérer dans la table financial_history_details en utilisant des sous requêtes car j'ai besoin de l'instruction pour extraire des données d'autres parties de la table.Sous-requête retournant plusieurs résultats dans un insert
Ceci est correct s'il y a une ligne d'information. Mon problème est que j'essaie d'insérer des milliers de lignes de données, avec certains bits d'information (batch_number, contact_number
) tirés de différentes tables. J'ai pensé à utiliser une sous-requête comme vu dans cette déclaration, mais comme je l'ai déjà dit, cela ne fonctionne pas très bien, car elle n'insère qu'une seule donnée à la fois.
INSERT INTO financial_history (batch_number, transaction_number, contact_number, transaction_date,
transaction_type, amount, payment_method, posted, address_number, currency_amount)
VALUES ((select batch_number from event_bookings where batch_number not in (select batch_number from batches)), 1,
(select contact_number from event_bookings where batch_number not in (select batch_number from batches)),
'20-sep-2017', 'P', 0, 'CASH', '20-sep-2017',
(select address_number from event_bookings where batch_number not in (select batch_number from batches)), 0) ;
J'ai également essayé d'utiliser l'importation de CSV mais est à l'origine d'un certain nombre de problèmes qui en font une solution peu pratique:
BULK
INSERT batches
FROM 'C:\batches.csv'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n'
)
GO
Existe-t-il d'autres façons de le faire?