Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Bestellen in SQL Server

Ich habe festgestellt, dass ich die Reihenfolge der Quelltabellen mit BULK INSERT beibehalten kann in eine Datei, gefolgt vom Hinzufügen einer Identität.

Bei einer tabulatorgetrennten Tabelle C:\MyTable.txt , wo ich absichtlich Zeilen aus der Reihenfolge verschoben habe:

FileName    FileType
wmsetup log
bar txt
wmsetup10   log
WMSysPr9    prx
WMSysPrx    prx
Wudf01000Inst   log
xpsp1hfm    log
_default    pif
0   log
002391_ tmp
005766_ tmp

Ich habe Folgendes ausgeführt und die Reihenfolge der Textdateien in SQL Server beibehalten:

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

Ergebnis:

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