Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zamawianie w SQL Server

Odkryłem, że jestem w stanie zachować kolejność tabel źródłowych za pomocą BULK INSERT do pliku, a następnie dodaj tożsamość.

Biorąc pod uwagę tabelę rozdzielaną tabulatorami, C:\MyTable.txt , gdzie celowo przeniosłem wiersze nie w porządku:

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

Uruchomiłem następujące i zachowałem kolejność plików tekstowych w 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

Wynik:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rekurencyjne CTE z unikalnym identyfikatorem musi mieć wartość w zakotwiczeniu

  2. Dlaczego miałby SqlServer select wybrać wiersze, które pasują i wiersze, które pasują i mają końcowe spacje?

  3. nie można oddać wartości jako zmiennoprzecinkowej

  4. Użyj DB_ID(), aby zwrócić identyfikator bazy danych w SQL Server

  5. Przykłady COS() w SQL Server