2009-06-12 54 views
0

我收到一个在ACCESS数据库中发送给我的SQL数据库的每月数据更新,大约有30个表格遵循这种模式,最大的表格包含大约40,000行。如何以编程方式使用SSIS在SQL Server中创建MS Access表?

CREATE TABLE [dbo].[TABLE_NAME_HERE] (
[title] nvarchar (255) NULL, 
[classification1] nvarchar (255) NULL, 
[classification2] nvarchar (255) NULL, 
[1986] float NULL, 
[1987] float NULL, 
[1988] float NULL, 
[1989] float NULL, 
[1990] float NULL, 
[1991] float NULL, 
[1992] float NULL, 
[1993] float NULL, 
[1994] float NULL, 
[1995] float NULL, 
[1996] float NULL, 
[1997] float NULL, 
[1998] float NULL, 
[1999] float NULL, 
[2000] float NULL, 
[2001] float NULL, 
[2002] float NULL, 
[2003] float NULL, 
[2004] float NULL, 
[2005] float NULL, 
[2006] float NULL, 
[2007] float NULL, 
[2008] float NULL, 
[2009] float NULL, 
[2010] float NULL, 
[2011] float NULL, 
[2012] float NULL, 
[2013] float NULL, 
[2014] float NULL, 
[2015] float NULL, 
[2016] float NULL, 
[2017] float NULL, 
[2018] float NULL, 
[2019] float NULL, 
[2020] float NULL, 
[2021] float NULL, 
[2022] float NULL, 
[2023] float NULL, 
[2024] float NULL, 
[2025] float NULL) 

目前我们有DTSX包,但每隔一段时间uploades这些表(每年),他们将另一列添加和DTSX包有harded编码列的详细信息。

我们没有时间或预算对应用程序进行重新编程 - 虽然我同意有很多更好的方法来存储这些数据。

我想让DTSX包自动删除SQL服务器上的表,创建一个与ACCESS数据库和上传数据相匹配的表。

这可能吗?

回答

0

是否可以更改表结构?例如,如果您有一个名为Year的列和另一个名为Value的子表,则不需要每年都不断添加新列。将数据存储在表行中而不是列名中是一种好的做法。

例如,也可以在MS-Acceess VBA中使用ADOX来循环访问表的字段集合,并从此在SQL Server中创建一个新表。代码将类似于in this link,但需要更改以使用SQL Server连接等。

+0

没有选择(时间/预算)来更改表格结构,这是支持现有应用程序的一种情况 - 我只是想在上传时节省几个小时。 – StocksR 2009-06-16 11:22:17

0

DTS中的一个选项是在导入时创建新表。但正如前一篇文章所建议的,您应该通常检查问题原因,因此无需更改表格(严重建议不要)。如果有新栏目,则无论如何都必须更改程序代码,除非新栏目完全无用。在这种情况下,只需在导入之前删除列,并且您再次正常。如果该列很有用,那么如何在不编写引用它的代码的情况下使用它(创建/导入表之后)?

+0

你可以提供更多的deatils这个选项来创建一个新的表在导入 - 我找不到这个选项。 – StocksR 2009-06-16 11:20:02

相关问题