如何使用SSIS以编程方式在SQL Server中创建MS Access表?

时间:2009-06-12 09:30:20

标签: sql-server ms-access ssis

我收到了在ACCESS数据库中发送给我的SQL数据库的每月数据更新,大约有30个表遵循这种模式,最大的表包含大约40,000行。

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软件包可以上传这些表,但每隔一段时间(每年)它们会添加另一列,而DTSX软件包的列详细信息已经过编码。

我们没有时间或预算来重新编程所涉及的应用程序 - 尽管我同意有更好的方法来存储这些数据。

我想让DTSX软件包自动DROP SQL服务器上的表,创建一个与ACCESS数据库匹配的表并上传数据。

这可能吗?

2 个答案:

答案 0 :(得分:0)

是否可以选择更改表格结构?例如,如果您有一个名为Year的列的子表和另一个名为Value的子表,那么就不需要继续逐年添加新列。最好将数据存储在表行而不是列名中。

例如,也可以在MS-Acceess VBA中使用ADOX循环访问Access表的Fields Collection,然后在SQL Server中创建一个新表。代码类似于in this link,但需要更改才能使用SQL Server连接等。

答案 1 :(得分:0)

DTS中的一个选项是在导入时创建一个新表。但正如之前的帖子建议你应该检查问题原因通常没有必要(并且强烈反对)更改表格。当有一个新列时,除非新列完全无用,否则无论如何都必须更改程序代码。在这种情况下,只需在导入之前删除列,您就可以了。如果该列有用,那么如何在不编写引用它的代码的情况下使用它(在创建/导入表之后)???