SqlServer复制一个表的数据到另一个表大体上分两种情况,第一种情况是目标表当前不存在的情况,下面代码中将TPerson表数据复制到TNew表中,TNew表当前不存在。
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static string ConnectionString = @"Data Source=(localdb)\Projects;Initial Catalog=DbTest;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False";
static void Main(string[] args)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandText = "select * into [TNew] from [TPerson]";
try
{
connection.Open();
command.ExecuteNonQuery();
Console.WriteLine("复制表成功");
}
catch
{
Console.WriteLine("复制表失败");
}
}
Console.ReadKey(true);
}
}
}
第二种情况是目标表当前已经存在,此时又需要分两种情况,第一种情况:TPerson表的主键为自增Id,此时只能选择非主键列进行复制,代码如下:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static string ConnectionString = @"Data Source=(localdb)\Projects;Initial Catalog=DbTest;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False";
static void Main(string[] args)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandText = "insert into [TNew] select Name,Gender from [TPerson]";
try
{
connection.Open();
command.ExecuteNonQuery();
Console.WriteLine("复制表成功");
}
catch
{
Console.WriteLine("复制表失败");
}
}
Console.ReadKey(true);
}
}
}
第二种情况:TPerson表主键为非自增Id,此时可选择全部列进行复制,代码如下:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static string ConnectionString = @"Data Source=(localdb)\Projects;Initial Catalog=DbTest;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False";
static void Main(string[] args)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
SqlCommand command = new SqlCommand();
command.Connection = connection;
command.CommandText = "insert into [TNew] select * from [TPerson]";
try
{
connection.Open();
command.ExecuteNonQuery();
Console.WriteLine("复制表成功");
}
catch
{
Console.WriteLine("复制表失败");
}
}
Console.ReadKey(true);
}
}
}