J'ai trouvé que je suis capable de préserver l'ordre de la table source en utilisant BULK INSERT
dans un fichier, suivi de l'ajout d'une identité.
Étant donné une table délimitée par des tabulations, C:\MyTable.txt
, où j'ai intentionnellement déplacé des lignes dans le désordre :
FileName FileType
wmsetup log
bar txt
wmsetup10 log
WMSysPr9 prx
WMSysPrx prx
Wudf01000Inst log
xpsp1hfm log
_default pif
0 log
002391_ tmp
005766_ tmp
J'ai exécuté ce qui suit et conservé l'ordre des fichiers texte dans SQL Server :
IF EXISTS(
SELECT 1
FROM sys.tables t
INNER JOIN sys.schemas s on s.schema_id=t.schema_id
WHERE t.name='myTable'
AND t.[type]='U'
AND s.name='dbo'
)
DROP TABLE myTable
GO
CREATE TABLE dbo.myTable(FileName VARCHAR(80), FileType VARCHAR(30))
GO
BULK INSERT myTable FROM 'C:\MyTable.txt' WITH (
firstrow=2
, fieldterminator='\t'
, rowterminator='\n'
)
GO
ALTER TABLE myTable ADD ID INT IDENTITY(1,1)
GO
SELECT * FROM myTable
GO
Résultat :
FileName FileType ID
--------------- -------- -----------
wmsetup log 1
bar txt 2
wmsetup10 log 3
WMSysPr9 prx 4
WMSysPrx prx 5
Wudf01000Inst log 6
xpsp1hfm log 7
_default pif 8
0 log 9
002391_ tmp 10
005766_ tmp 11