使用c# .Net将整个表从ODBC源复制到SQL Server,而不指定列的方式如下:
下面是一个示例代码:
using System;
using System.Data;
using System.Data.Odbc;
using System.Data.SqlClient;
namespace ODBCtoSQLServer
{
class Program
{
static void Main(string[] args)
{
string odbcConnectionString = "yourODBCConnectionString";
string sqlServerConnectionString = "yourSQLServerConnectionString";
string tableName = "yourTableName";
using (OdbcConnection odbcConnection = new OdbcConnection(odbcConnectionString))
{
odbcConnection.Open();
using (SqlCommand sqlCommand = new SqlCommand())
{
using (SqlConnection sqlConnection = new SqlConnection(sqlServerConnectionString))
{
sqlConnection.Open();
// 从ODBC源中获取整个表的数据
string selectQuery = $"SELECT * FROM {tableName}";
using (OdbcDataAdapter odbcDataAdapter = new OdbcDataAdapter(selectQuery, odbcConnection))
{
DataTable dataTable = new DataTable();
odbcDataAdapter.Fill(dataTable);
// 生成INSERT INTO语句的列部分
string columns = "";
foreach (DataColumn column in dataTable.Columns)
{
columns += "[" + column.ColumnName + "],";
}
columns = columns.TrimEnd(',');
// 生成INSERT INTO语句的值部分
foreach (DataRow row in dataTable.Rows)
{
string values = "";
foreach (var item in row.ItemArray)
{
values += "'" + item.ToString() + "',";
}
values = values.TrimEnd(',');
// 执行INSERT INTO语句,将数据插入到SQL Server中
string insertQuery = $"INSERT INTO {tableName} ({columns}) VALUES ({values})";
sqlCommand.CommandText = insertQuery;
sqlCommand.Connection = sqlConnection;
sqlCommand.ExecuteNonQuery();
}
}
}
}
}
Console.WriteLine("Data copied from ODBC source to SQL Server successfully.");
Console.ReadLine();
}
}
}
请注意,在使用上述代码之前,需要根据实际情况替换以下变量:
odbcConnectionString
:ODBC连接字符串,包含源数据库的连接信息。sqlServerConnectionString
:SQL Server连接字符串,包含目标数据库的连接信息。tableName
:要复制的表的名称。这段代码通过ODBC连接获取整个表的数据,并使用SQL Server连接执行INSERT INTO语句将数据插入到目标数据库的表中。由于不指定列,表中的所有列将被复制到目标数据库。
请注意,这只是一个示例代码,具体实现可能因为具体的数据源和目标数据库的差异而有所不同。您可能需要根据实际情况进行调整和优化。
领取专属 10元无门槛券
手把手带您无忧上云