Vâng, tôi nghĩ tôi sẽ kéo ngón tay của tôi ra và viết bản thân mình một ánh sáng phát dữ liệu trọng lượng:
declare @select varchar(max), @insert varchar(max), @column varchar(100),
@type varchar(100), @identity bit, @db nvarchar(100)
set @db = N'Orders'
set @select = 'select '
set @insert = 'insert into ' + @db + ' ('
declare crD cursor fast_forward for
select column_name, data_type,
COLUMNPROPERTY(
OBJECT_ID(
TABLE_SCHEMA + '.' + TABLE_NAME),
COLUMN_NAME, 'IsIdentity') AS COLUMN_ID
from Northwind.INFORMATION_SCHEMA.COLUMNS
where table_name = @db
open crD
fetch crD into @column, @type, @identity
while @@fetch_status = 0
begin
if @identity = 0 or @identity is null
begin
set @insert = @insert + @column + ', '
set @select = @select +
case @type
when 'int' then '1'
when 'varchar' then '''test'''
when 'nvarchar' then '''test'''
when 'smalldatetime' then 'getdate()'
when 'bit' then '0'
else 'NULL'
end + ', '
end
fetch crD into @column, @type, @identity
end
set @select = left(@select, len(@select) - 1)
set @insert = left(@insert, len(@insert) - 1) + ')'
exec(@insert + @select)
close crD
deallocate crD
Với bất kỳ bảng, kịch bản sẽ tạo ra một kỷ lục với một số giá trị tùy ý cho các loại ; int, varchar, nvarchar, smalldatetime và bit. Câu lệnh trường hợp có thể được thay thế bằng một hàm. Nó sẽ không đi xuống phụ thuộc nhưng nó sẽ bỏ qua bất kỳ cột hạt giống nào.
Động cơ của tôi để tạo điều này là kiểm tra các tệp ánh xạ NHibernate của tôi với một bảng có khoảng 50 cột, vì vậy tôi đã sử dụng lại một kịch bản đơn giản có thể được sử dụng lại.
Nguồn
2009-07-13 13:22:24
+1 nội dung tuyệt vời! –
Sản phẩm tuyệt vời nhưng tôi đang tìm thứ gì đó nhẹ hơn và miễn phí khi tôi sử dụng hết thời gian dùng thử miễn phí một thời gian trước và không thể lấy ngân sách cho nó :( –