# int
Create table sourceTable(a int, b int not null)
Create table destinationTable(a int, b int not null)
Insert into sourceTable values (1, 1);
Insert into sourceTable values (NULL, 2);
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# smallint
Create table sourceTable(a smallint, b smallint not null)
Create table destinationTable(a smallint, b smallint not null)
Insert into sourceTable values (1, 1);
Insert into sourceTable values (NULL, 2);
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# bigint
Create table sourceTable(a bigint, b bigint not null)
Create table destinationTable(a bigint, b bigint not null)
Insert into sourceTable values (1, 1);
Insert into sourceTable values (NULL, 2);
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# bit
Create table sourceTable(a bit, b bit not null)
Create table destinationTable(a bit, b bit not null)
Insert into sourceTable values (1, 1);
Insert into sourceTable values (NULL, 0);
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# float
Create table sourceTable(a float, b float not null)
Create table destinationTable(a float, b float not null)
Insert into sourceTable values (1.1101, 0.00010);
Insert into sourceTable values (NULL, 0.101010);
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# real
Create table sourceTable(a real, b real not null)
Create table destinationTable(a real, b real not null)
Insert into sourceTable values (1.1101, 0.00010);
Insert into sourceTable values (NULL, 0.101010);
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# char
Create table sourceTable(a char(10), b char(10) not null)
Create table destinationTable(a char(10), b char(10) not null)
Insert into sourceTable values ('hello', 'jello');
Insert into sourceTable values (NULL, 'mellow');
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# nchar
Create table sourceTable(a nchar(10), b nchar(10) not null)
Create table destinationTable(a nchar(10), b nchar(10) not null)
Insert into sourceTable values ('hello', 'jello');
Insert into sourceTable values (NULL, 'mellow');
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# varchar
Create table sourceTable(a varchar(10), b varchar(10) not null)
Create table destinationTable(a varchar(10), b varchar(10) not null)
Insert into sourceTable values ('hello', 'jello');
Insert into sourceTable values (NULL, 'mellow');
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# nvarchar
Create table sourceTable(a nvarchar(10), b nvarchar(10) not null)
Create table destinationTable(a nvarchar(10), b nvarchar(10) not null)
Insert into sourceTable values ('hello', 'jello');
Insert into sourceTable values (NULL, 'mellow');
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# text
Create table sourceTable(a text, b text not null)
Create table destinationTable(a text, b text not null)
Insert into sourceTable values ('hello', 'jello');
Insert into sourceTable values (NULL, 'mellow');
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# ntext
Create table sourceTable(a ntext, b ntext not null)
Create table destinationTable(a ntext, b ntext not null)
Insert into sourceTable values ('hello', 'jello');
Insert into sourceTable values (NULL, 'mellow');
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# binary
Create table sourceTable(a binary(10), b binary(10) not null)
Create table destinationTable(a binary(10), b binary(10) not null)
Insert into sourceTable values (0x31323334, 0x9241);
Insert into sourceTable values (NULL, 0x4202);
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# varbinary
Create table sourceTable(a varbinary(10), b varbinary(10) not null)
Create table destinationTable(a varbinary(10), b varbinary(10) not null)
Insert into sourceTable values (0x31323334, 0x9241);
Insert into sourceTable values (NULL, 0x4202);
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# numeric
Create table sourceTable(a numeric(38, 22), b numeric(38, 22) not null)
Create table destinationTable(a numeric(38, 22), b numeric(38, 22) not null)
Insert into sourceTable values (1.1101, 0.00010);
Insert into sourceTable values (NULL, 0.101010);
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# decimal
Create table sourceTable(a decimal(38, 22), b decimal(38, 22) not null)
Create table destinationTable(a decimal(38, 22), b decimal(38, 22) not null)
Insert into sourceTable values (1.1101, 0.00010);
Insert into sourceTable values (NULL, 0.101010);
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# money
Create table sourceTable(a money, b money not null)
Create table destinationTable(a money, b money not null)
Insert into sourceTable values (100.11, 0.10);
Insert into sourceTable values (NULL, 91.12);
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# smallmoney
Create table sourceTable(a smallmoney, b smallmoney not null)
Create table destinationTable(a smallmoney, b smallmoney not null)
Insert into sourceTable values (100.11, 0.10);
Insert into sourceTable values (NULL, 91.12);
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# uniqueidentifier
Create table sourceTable(a uniqueidentifier, b uniqueidentifier not null)
Create table destinationTable(a uniqueidentifier, b uniqueidentifier not null)
Insert into sourceTable values ('51f178a6-53c7-472c-9be1-1c08942342d7', 'dd8cb046-461d-411e-be40-d219252ce849');
Insert into sourceTable values (NULL, 'b84ebcc9-c927-4cfe-b08e-dc7f25b5087c');
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# date
Create table sourceTable(a date, b date not null)
Create table destinationTable(a date, b date not null)
Insert into sourceTable values ('2000-02-28', '0001-01-01');
Insert into sourceTable values (NULL, '1001-11-11');
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# time
Create table sourceTable(a time(6), b time(6) not null)
Create table destinationTable(a time(6), b time(6) not null)
Insert into sourceTable values ('12:45:37.123', '12:45:37.12');
Insert into sourceTable values (NULL, '12:45:37.123456');
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# datetime
Create table sourceTable(a datetime, b datetime not null)
Create table destinationTable(a datetime, b datetime not null)
Insert into sourceTable values ('2000-12-13 12:58:23.123', '1900-02-28 23:59:59.989');
Insert into sourceTable values (NULL, '9999-12-31 23:59:59.997');
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# smalldatetime
Create table sourceTable(a smalldatetime, b smalldatetime not null)
Create table destinationTable(a smalldatetime, b smalldatetime not null)
Insert into sourceTable values ('2007-05-08 12:35:29', '2000-12-13 12:58:23');
Insert into sourceTable values (NULL, '2000-02-28 23:45:30');
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# datetime2
Create table sourceTable(a Datetime2(6), b Datetime2(6) not null)
Create table destinationTable(a Datetime2(6), b Datetime2(6) not null)
Insert into sourceTable values ('2016-10-23 12:45:37.123', '2016-10-23 12:45:37.123');
Insert into sourceTable values (NULL, '2016-10-23 12:45:37.123456');
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# sql_variant
Create table sourceTable(a sql_variant, b sql_variant not null)
Create table destinationTable(a sql_variant, b sql_variant not null)
# Bug BABEL-2728
#Insert into sourceTable values (cast (1 as int),cast ('abc' as varchar(10)));
Insert into sourceTable values (NULL, cast ('14:37:45.123456' as time(5)));
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# image
Create table sourceTable(a image, b image not null)
Create table destinationTable(a image, b image not null)
Insert into sourceTable values (0x31323334, 0x9241);
Insert into sourceTable values (NULL, 0x4202);
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# identity
Create table sourceTable(a int identity, b int)
Create table destinationTable(a int identity, b int)
insert into sourceTable values (1)
insert into sourceTable values (2)
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable

# identity test in case of check constraints off and KeepIdentity is on
create table sourceTable(c1 int identity, c2 CHAR(1024))
 set IDENTITY_INSERT sourceTable ON
INSERT INTO sourceTable (c1, c2) SELECT generate_series(1, 1001, 1), 'Foo';
 set IDENTITY_INSERT sourceTable OFF
create table destinationTable(c1 int identity, c2 CHAR(1024), check (c1 < 500))
traninsertbulk#!#sourceTable#!#destinationTable#!#keepIdentity
create table sourceTable1(c1 int identity, c2 CHAR(1024))
 set IDENTITY_INSERT sourceTable1 ON
INSERT INTO sourceTable1 (c1, c2) VALUES(1001, 'Foo')
INSERT INTO sourceTable1 (c1, c2) SELECT generate_series(1, 1000, 1), 'Foo';
 set IDENTITY_INSERT sourceTable1 OFF
traninsertbulk#!#sourceTable1#!#destinationTable#!#keepIdentity
Select count(c1) from sourceTable
select count(c1) from sourceTable1
select count(c1) from destinationTable
select Ident_CURRENT('sourceTable')
select Ident_CURRENT('sourceTable1')
select Ident_CURRENT('destinationTable')
drop table sourceTable
drop table sourceTable1
drop table destinationTable

# identity test when IDENTITY_INSERT destinationTable is ON inside the same connection which does the insert bulk without keepIdentity
Create table sourceTable(a int identity, b int)
Create table destinationTable(a int identity(1, 2), b int)
insert into sourceTable values (1)
insert into sourceTable values (2)
 set IDENTITY_INSERT destinationTable ON
traninsertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
Select Ident_CURRENT('sourceTable')
Select Ident_CURRENT('destinationTable')
drop table sourceTable
drop table destinationTable

# identity test when IDENTITY_INSERT destinationTable is ON inside the same connection which does the insert bulk with keepIdentity
Create table sourceTable(a int identity, b int)
Create table destinationTable(a int identity(1, 2), b int)
insert into sourceTable values (1)
insert into sourceTable values (2)
 set IDENTITY_INSERT destinationTable ON
traninsertbulk#!#sourceTable#!#destinationTable#!#keepIdentity
Select * from sourceTable
Select * from destinationTable
Select Ident_CURRENT('sourceTable')
Select Ident_CURRENT('destinationTable')
drop table sourceTable
drop table destinationTable

# identity test when both tables have positive increment value and we insert less than seed value
Create table sourceTable(a int, b int identity)
Create table destinationTable(a int, b int identity)
 set IDENTITY_INSERT sourceTable ON
insert into sourceTable (a, b) values (1, -1)
insert into sourceTable (a ,b) values (2, -4)
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
Select Ident_CURRENT('sourceTable')
Select Ident_CURRENT('destinationTable')
drop table sourceTable
drop table destinationTable

# identity test when both tables have positive increment value and we insert more than seed value
Create table sourceTable(a int, b int identity)
Create table destinationTable(a int, b int identity)
 set IDENTITY_INSERT sourceTable ON
insert into sourceTable (a, b) values (1, -1)
insert into sourceTable (a ,b) values (2, 4)
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
Select Ident_CURRENT('sourceTable')
Select Ident_CURRENT('destinationTable')
drop table sourceTable
drop table destinationTable

# identity test when source table has negative increment value and we insert more than seed value
Create table sourceTable(a int, b int identity(-1, -1))
Create table destinationTable(a int, b int identity)
 set IDENTITY_INSERT sourceTable ON
insert into sourceTable (a, b) values (1, 2)
insert into sourceTable (a ,b) values (2, 4)
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
Select Ident_CURRENT('sourceTable')
Select Ident_CURRENT('destinationTable')
drop table sourceTable
drop table destinationTable

# identity test when source table has negative increment value and we insert less than seed value
Create table sourceTable(a int, b int identity(-1, -1))
Create table destinationTable(a int, b int identity)
 set IDENTITY_INSERT sourceTable ON
insert into sourceTable (a, b) values (1, -2)
insert into sourceTable (a ,b) values (2, 4)
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
Select Ident_CURRENT('sourceTable')
Select Ident_CURRENT('destinationTable')
drop table sourceTable
drop table destinationTable

# identity test when both tables have negative increment value and we insert more than seed value
Create table sourceTable(a int, b int identity(-1, -1))
Create table destinationTable(a int, b int identity(-1, -1))
 set IDENTITY_INSERT sourceTable ON
insert into sourceTable (a, b) values (1, 2)
insert into sourceTable (a ,b) values (2, 4)
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
Select Ident_CURRENT('sourceTable')
Select Ident_CURRENT('destinationTable')
drop table sourceTable
drop table destinationTable

# identity test when both tables have negative increment value and we insert less than seed value
Create table sourceTable(a int, b int identity(-1, -1))
Create table destinationTable(a int, b int identity(-1, -1))
 set IDENTITY_INSERT sourceTable ON
insert into sourceTable (a, b) values (1, -2)
insert into sourceTable (a ,b) values (2, 4)
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
Select Ident_CURRENT('sourceTable')
Select Ident_CURRENT('destinationTable')
drop table sourceTable
drop table destinationTable

# identity test when destination table has negative increment value and we insert less than seed value
Create table sourceTable(a int, b int identity)
Create table destinationTable(a int, b int identity(-1, -1))
 set IDENTITY_INSERT sourceTable ON
insert into sourceTable (a, b) values (1, -1)
insert into sourceTable (a ,b) values (2, -4)
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
Select Ident_CURRENT('sourceTable')
Select Ident_CURRENT('destinationTable')
drop table sourceTable
drop table destinationTable

# identity test when destination table has negative increment value and we insert more than seed value
Create table sourceTable(a int, b int identity)
Create table destinationTable(a int, b int identity(-1, -1))
 set IDENTITY_INSERT sourceTable ON
insert into sourceTable (a, b) values (1, -1)
insert into sourceTable (a ,b) values (2, 4)
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
Select Ident_CURRENT('sourceTable')
Select Ident_CURRENT('destinationTable')
drop table sourceTable
drop table destinationTable

# trigger
create table t_rcv (a int)
create table t_rcv2 (b int)
create trigger tri on t_rcv for insert as begin insert t_rcv2 select a*-1 from inserted end
insert t_rcv values (123)
insertbulk#!#t_rcv#!#t_rcv
insertbulk#!#t_rcv2#!#t_rcv
select * from t_rcv
select * from t_rcv2
drop table t_rcv
drop table t_rcv2

# Testing with default values
Create table sourceTable(a int Default 10, b varchar(10) default 'yellow')
Create table destinationTable(a int Default 10, b varchar(10) default 'yellow')
Insert into sourceTable values (NULL, NULL);
Insert into sourceTable values (10, 'hello');
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable


Create table sourceTable (a int);
Create table destinationTable(a int, check (a < 2))
INSERT INTO sourceTable SELECT generate_series(1, 1000, 1);
INSERT INTO sourceTable values (2);
insertbulk#!#sourceTable#!#destinationTable
Select count(*) from sourceTable
select count(*) from destinationTable
drop table sourceTable
drop table destinationTable

Create table sourceTable (a int);
Create table destinationTable(a int)
INSERT INTO sourceTable SELECT generate_series(1, 1500, 1);
insertbulk#!#sourceTable#!#destinationTable
Select count(*) from sourceTable
select count(*) from destinationTable
drop table sourceTable
drop table destinationTable

create table sourceTable(c1 int, c2 CHAR(1024))
INSERT INTO sourceTable SELECT generate_series(1, 1000, 1), 'Foo'
create table destinationTable(c1 int PRIMARY KEY, c2 CHAR(1024))
INSERT INTO destinationTable VALUES(1000, 'Foo')
insertbulk#!#sourceTable#!#destinationTable
Select count(*) from sourceTable
select count(*) from destinationTable
drop table sourceTable
drop table destinationTable

# partitioned table
CREATE TABLE sourceTable(c1 int, c2 CHAR(1024))
INSERT INTO sourceTable SELECT generate_series(1, 1000, 1), 'Foo'
CREATE PARTITION FUNCTION IntPartitionFunction (int) AS RANGE RIGHT FOR VALUES (0, 500, 1000)
CREATE PARTITION SCHEME IntPartitionScheme AS PARTITION IntPartitionFunction ALL TO ([PRIMARY])
CREATE TABLE partitionedTable(c1 int, c2 CHAR(1024)) ON IntPartitionScheme(c1)
insertbulk#!#sourceTable#!#partitionedTable
Select count(*) from sourceTable
select count(*) from partitionedTable
DROP TABLE partitionedTable
DROP PARTITION SCHEME IntPartitionScheme
DROP PARTITION FUNCTION IntPartitionFunction
DROP TABLE sourceTable

# Packet boundary test - TEXT with large data to cause DONE token split across packets
Create table sourceTable(a text)
Create table destinationTable(a text)
Insert into sourceTable values ('abcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaababcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabcaabc')
insertbulk#!#sourceTable#!#destinationTable
Select * from sourceTable
Select * from destinationTable
drop table sourceTable
drop table destinationTable
