Maison > base de données > tutoriel mysql > Comment convertir correctement les variables pour les insertions en masse dans T-SQL ?

Comment convertir correctement les variables pour les insertions en masse dans T-SQL ?

Linda Hamilton
Libérer: 2024-12-21 04:36:10
original
307 Les gens l'ont consulté

How to Correctly Cast Variables for Bulk Inserts in T-SQL?

Casting de variables pour l'insertion en masse dans T-SQL

Dans T-SQL, l'instruction BULK INSERT permet d'importer des données à partir d'un déposer dans un tableau. Cependant, si vous utilisez une variable chaîne comme source de données, une erreur peut se produire.

Problème :

Le code T-SQL suivant échoue avec une erreur (une partie de une procédure stockée):

DECLARE @CSVfile nvarchar(255);
SET @CSVfile = N'T:\x.csv';
BULK INSERT [dbo].[TStagingTable]
-- FROM N'T:\x.csv' -- This line works
FROM @CSVfile -- This line fails
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
FIRSTROW = 2
)
Copier après la connexion

Erreur message :

Incorrect syntax near the keyword 'with'.
Copier après la connexion

Raison :

Dans l'instruction BULK INSERT, la clause FROM nécessite une chaîne littérale comme chemin d'accès au fichier d'entrée. Lorsque vous utilisez une variable, elle doit être convertie en chaîne littérale.

Solution :

Pour convertir la variable @CSVfile en chaîne littérale, utilisez le T dynamique suivant -Syntaxe SQL :

declare @q nvarchar(MAX);
set @q=
    'BULK INSERT [TStagingTable]
    FROM '+char(39)+@CSVfile+char(39)+'
    WITH
    (
    FIELDTERMINATOR = '','',
    ROWTERMINATOR = ''\n'',
    FIRSTROW = 1  
    )'
exec(@q)
Copier après la connexion

Ce code génère une instruction SQL dynamique qui convertit @CSVfile en une chaîne littérale dans le FROM clause, résolvant le problème et permettant à l'insertion groupée de réussir.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal