最好的方式从MS Access表迁移到SQL Server和巩固
我有了一个表中的每个相册与表作为ALBUMNAME名最好的方式从MS Access表迁移到SQL Server和巩固
的tablename =“跳闸” 字段MS Access数据库:picID,评论
我正在迁移到SQL服务器,我想解决这个问题正常化,只是有
- 一台名为相册ALBUMID和ALBUMNAME
- 一个表用picID,albumID等称呼图片。 。
反正是有自动取多个表的访问和移动到一个表中的SQL Server
感谢您的提示。 。我使用下面的代码得到它的工作。 。
public void InsertIntoSQL()
{
string accessDataSource = ConfigurationSettings.AppSettings["photosDB"];
OleDbConnection msAccessConnection = new OleDbConnection(accessDataSource);
msAccessConnection.Open();
string SQLServerDataSource = ConfigurationManager.ConnectionStrings["kantro_49478ConnectionString"].ConnectionString;
var sqlConnection = new SqlConnection(SQLServerDataSource);
sqlConnection.Open();
DataTable table = msAccessConnection.GetSchema("tables");
foreach (DataRow row in table.Rows)
{
string albumName = row[2].ToString();
if (!string.IsNullOrEmpty(albumName) && !albumName.StartsWith("~"))
{
string sql = "Select * from " + albumName;
OleDbDataAdapter objCommand1 = new OleDbDataAdapter(sql, msAccessConnection);
DataSet ds1 = new DataSet();
objCommand1.Fill(ds1);
SqlDataAdapter objCommand = new SqlDataAdapter("Select album_id from PhotoAlbums where album_name = '" + albumName + "'", sqlConnection);
DataSet ds = new DataSet();
objCommand.Fill(ds);
string albumID = ds.Tables[0].Rows[0][0].ToString();
foreach (DataRow dRow in ds1.Tables[0].Rows)
{
string sql1 = "INSERT INTO Pictures VALUES (" + dRow[0].ToString() + ", " + albumID + ")";
SqlCommand myCommand = new SqlCommand(sql1);
myCommand.Connection = sqlConnection;
myCommand.ExecuteNonQuery();
}
}
}
msAccessConnection.Close();
}
增加进一步@rexem这个过程中,你可以得到表名的列表(即相册)访问,使用下面的查询
SELECT ID, Name
FROM msysobjects
WHERE type = 1 AND flags=0
你可以用它来记录插入到相册表(通过创建链接表到SQL Server数据库的相册表)。
编辑:我使用Access 2007 &看不到“显示系统对象”选项。
或者,你将不得不写代码进去MS-Access中的表
看看这个链接帮助 - http://www.microsoft.com/technet/scriptcenter/resources/qanda/jun06/hey0608.mspx
我收到此错误。 。 无法读取记录; 'msysobjects'没有读取权限。 – leora 2009-09-02 02:49:17
@oo:你能够在数据库中的其他表上做SELECT吗? – shahkalpesh 2009-09-02 03:01:17
您可以先将其迁移到SQL Server,然后再进行转换。可能会比试图与Access和SQL Server进行争吵更容易。
这里是一个SQL Server访问迁移工具。
http://www.microsoft.com/sqlserver/2005/en/us/migration-access.aspx
我不同意。我认为在Access中创建一个新表更容易,并在Access中追加所有记录,然后升级该单个表。没有必要的代码。 – 2009-09-03 01:53:16
这肯定会奏效。 :) – klabranche 2009-09-03 02:17:47
albumID列是什么类型? – shahkalpesh 2009-09-02 02:42:35
int - 自动增量 – leora 2009-09-02 02:47:47