/ / Pobierz typ kolumny tabeli tymczasowej SQL Server - serwer sql, metadane, tabele temp

Pobierz typ kolumny tabeli SQL Server - serwer sql, metadane, tabele temp

Wczytywam pliki CSV do tymczasowych tabel, jak poniżej:

select *
into #Temp
from openrowset("Microsoft.ACE.OLEDB.12.0",
"Text;Database=D:DataFolder;",
"SELECT * from [DataFile.csv]") as x;

Sterownik OLEDB określa typ dla każdej kolumny.

Ale tabele tymczasowe nie pojawiają się w INFORMATION_SCHEMA.COLUMNS.

Jak mogę określić typ danych dla każdej kolumny wynikowej #Temp stół?

Odpowiedzi:

2 dla odpowiedzi № 1

Poniższy kod pokazuje, jak uzyskaćinformacje dla wszystkich kolumn. Zwróć uwagę, że w [tempdb] nazwa tabeli to "____" z wieloma podkreśleniami. Więc musisz uzyskać do niego dostęp jako "LIKE __%", ale to powinno działać.

Jako bonus dodałem kod, aby uzyskać liczbę wierszy.

Jako notatkę, zwykle po prostu "SELECT INTO ...", a następnie skrypty tabeli i ręcznie utworzyć tabelę temp. Ale poniższy kod będzie działał zgodnie z oczekiwaniami.

CREATE TABLE #test
(
[id]     INT
, [name] NVARCHAR(12)
);


--
-- get columns and types
-------------------------------------------------
SELECT [columns].[name]
, [types].[name]
, [columns].*
, [types].*
FROM   [tempdb].[sys].[columns] AS [columns]
JOIN [tempdb].[sys].[tables] AS [tables]
ON [tables].[object_id] = [columns].[object_id]
JOIN [sys].[types] AS [types]
ON [types].[user_type_id] = [columns].[user_type_id]
WHERE  [tables].[name] LIKE N"#test__%";


--
-- get row count
-------------------------------------------------
SELECT [objects].[name]                      AS [table]
, [dm_db_partition_stats].[row_count] AS [row_count]
, *
FROM   [tempdb].[sys].[dm_db_partition_stats] AS [dm_db_partition_stats]
INNER JOIN [tempdb].[sys].[objects] AS [objects]
ON [dm_db_partition_stats].[object_id] = [objects].[object_id]
WHERE  [objects].[name] LIKE "#test%";