Est-il possible d'interroger un fichier délimité par des tabulations à partir de Sql Server Management Studio pour afficher ses données sans les enregistrer n'importe où?
Je sais que vous pouvez à BULK INSERT
partir d'un fichier délimité par des tabulations en utilisant quelque chose comme:
BULK INSERT SomeTable
FROM 'MyFile.txt'
WITH (
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n');
cependant, cela nécessite que vous connaissiez les colonnes à l'avance et que vous créiez une table pour contenir les données.
Je sais également que vous pouvez interroger d'autres types de fichiers tels que CSV ou Excel sans définir à l'avance les colonnes à l'aide de OPENROWSET
et les pilotes Excel, tels que:
-- Query CSV
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=\\Server\Folder\;HDR=Yes;',
'SELECT * FROM MyFile.csv')
-- Query Excel
SELECT *
FROM OPENROWSET('Microsoft.Ace.OLEDB.12.0',
'Excel 8.0;Database=MyFile.xls',
'SELECT * FROM [Sheet1$]')
De plus, si je modifie la clé de Registre Format
sous HKLM\Software\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Text
de CSVDelimited
à TabDelimited
sur sur SQL Server, la requête CSV ci-dessus lira correctement un fichier texte délimité par des tabulations, mais elle ne lira plus un fichier texte délimité par des virgules, donc je ne pense pas que je veux de le laisser comme ça.
Tenter d'utiliser Format=TabDelimited
dans le OPENROWSET
ne fonctionne pas non plus
SELECT *
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Text;Database=\\Server\Folder\;HDR=Yes;Format=TabDelimited',
'SELECT * FROM MyFile.txt')
J'ai tenté de copier les Text
clés de registre des clés Engines
et ISAM Formats
vers quelque chose de personnalisé par défaut TabDelimited
, mais il lit toujours les fichiers avec CSVFormat
au lieu du TabDelimited
format, donc je dois manquer quelque chose ici.
Existe-t-il un moyen d'interroger un fichier délimité par des tabulations pour afficher son contenu sans avoir à créer une table et BULK INSERT
lui?
J'utilise SQL Server 2005
la source
.bak
ce qui n'est pas une extension de fichier délimitée normale, et l'erreur qu'elle m'a donné lors de mon premier essai estCould not find installable ISAM
, donc je ne pense pas que cela fonctionnera.Réponses:
Vous devez créer un fichier schema.ini contenant le délimiteur dans le même répertoire que le fichier texte que vous ouvrez. C'est le seul moyen de remplacer les valeurs de registre par fichier. Voir la documentation sur le format de fichier sur MSDN . Exemple:
Dans C: \ Text \ schema.ini:
Si cette activité doit être répétée fréquemment, je suggère un script pour créer schema.ini. Plusieurs fichiers peuvent être référencés dans le même schema.ini ou un schema.ini distinct peut être inclus avec chaque fichier texte dans son propre répertoire.
la source