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
223 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!

source:php.cn
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