我收到了在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数据库匹配的表并上传数据。
这可能吗?
答案 0 :(得分:0)
是否可以选择更改表格结构?例如,如果您有一个名为Year的列的子表和另一个名为Value的子表,那么就不需要继续逐年添加新列。最好将数据存储在表行而不是列名中。
例如,也可以在MS-Acceess VBA中使用ADOX循环访问Access表的Fields Collection,然后在SQL Server中创建一个新表。代码类似于in this link,但需要更改才能使用SQL Server连接等。
答案 1 :(得分:0)
DTS中的一个选项是在导入时创建一个新表。但正如之前的帖子建议你应该检查问题原因通常没有必要(并且强烈反对)更改表格。当有一个新列时,除非新列完全无用,否则无论如何都必须更改程序代码。在这种情况下,只需在导入之前删除列,您就可以了。如果该列有用,那么如何在不编写引用它的代码的情况下使用它(在创建/导入表之后)???