My requirement was to transfer a specific set of rows from one table to another table and both have the exact schema bit-by-bit. In MSSQL, follow these steps:
1) First get the column list from the destination table. Use:
SELECT SUBSTRING(
(SELECT ', ' + QUOTENAME(COLUMN_NAME)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '<destination-table-name>'
ORDER BY ORDINAL_POSITION
FOR XML path('')),
3,
200000);
2) If the destination table has the ID column (primary key), then you need to turn on the identity_insert option:
set identity_insert <destination-table> on;
3) Then you insert...into...select query. The select can have any valid condition to get the specific set of data. A typical query can be like this:
insert into emails (<destination-table-column-list-from the query in step 1) SELECT <source-table-column-names>
FROM <source-table> where <any condition that will load only those records>;
4) Don't forget to turn off the identity_insert option you changed in step 2):
set identity_insert dbo.emails off;
And that is all...
1) First get the column list from the destination table. Use:
SELECT SUBSTRING(
(SELECT ', ' + QUOTENAME(COLUMN_NAME)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '<destination-table-name>'
ORDER BY ORDINAL_POSITION
FOR XML path('')),
3,
200000);
2) If the destination table has the ID column (primary key), then you need to turn on the identity_insert option:
set identity_insert <destination-table> on;
3) Then you insert...into...select query. The select can have any valid condition to get the specific set of data. A typical query can be like this:
insert into emails (<destination-table-column-list-from the query in step 1) SELECT <source-table-column-names>
FROM <source-table> where <any condition that will load only those records>;
4) Don't forget to turn off the identity_insert option you changed in step 2):
set identity_insert dbo.emails off;
And that is all...
No comments:
Post a Comment