-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTSQLLoadQlikScript
More file actions
65 lines (64 loc) · 2.62 KB
/
TSQLLoadQlikScript
File metadata and controls
65 lines (64 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/* ============================================================================
Purpose:
Generate Qlik Sense LOAD statements for every base table in the database.
The script loops all tables and prints a ready-to-copy Qlik load block.
============================================================================ */
-- Holds the current table name while iterating
DECLARE @TABLE_NAME AS NVARCHAR(255);
-- Cursor used to loop through all tables
DECLARE @GenQlikLoad AS CURSOR;
-- Build cursor source: only base tables (exclude views)
SET @GenQlikLoad = CURSOR FOR
SELECT
table_name
FROM INFORMATION_SCHEMA.TABLES
WHERE table_type = 'BASE TABLE'; -- Only get actual tables, not views
-- Start cursor and get first table
OPEN @GenQlikLoad;
FETCH NEXT FROM @GenQlikLoad INTO @TABLE_NAME;
-- Loop until no more tables are returned
WHILE @@fetch_status = 0
BEGIN
BEGIN TRY
-- Suppress "(X rows affected)" messages for cleaner output
SET NOCOUNT ON;
/* --------------------------------------------------------------------
Build formatted column list for Qlik LOAD:
- First column has no leading comma
- Remaining columns are prefixed with comma
- Preserves source column order using ORDINAL_POSITION
-------------------------------------------------------------------- */
DECLARE @Columns NVARCHAR(MAX);
SELECT @Columns = STRING_AGG(
CASE
WHEN ORDINAL_POSITION = 1 THEN ' [' + column_name + ']'
ELSE ' ,[' + column_name + ']'
END,
CHAR(13) + CHAR(10)
) WITHIN GROUP (ORDER BY ORDINAL_POSITION)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = @TABLE_NAME;
/* --------------------------------------------------------------------
Print Qlik load block for current table.
Example output:
TableName:
LOAD
[Col1]
,[Col2]
FROM Database.Schema.Table.qvd (qvd);
-------------------------------------------------------------------- */
PRINT @TABLE_NAME + ':' + CHAR(13) + CHAR(10) + 'LOAD' + CHAR(13) + CHAR(10) +
@Columns + CHAR(13) + CHAR(10) +
'FROM ' + db_name() + '.' + SCHEMA_NAME() + '.' + @TABLE_NAME + '.qvd (qvd);' + CHAR(13) + CHAR(10) +
'/////////////////////////////////////////////////////////////////////////////////////////////////';
END TRY
BEGIN CATCH
-- Log table-level error and continue to next table
PRINT 'Error processing table ' + @TABLE_NAME + ': ' + ERROR_MESSAGE();
END CATCH
-- Move to next table
FETCH NEXT FROM @GenQlikLoad INTO @TABLE_NAME;
END
-- Cleanup cursor resources
CLOSE @GenQlikLoad;
DEALLOCATE @GenQlikLoad;