【问题标题】:Mssql old table to new table different data types and emptiesMssql 旧表到新表不同的数据类型和空表
【发布时间】:2014-10-12 09:19:04
【问题描述】:

我为本地俱乐部的会员申请创建了一个新表,无论如何现有软件将信息存储在 DBF 文件中,我可以将其作为表导入 mssql,这没有问题我只是坚持合并旧数据到新表中。

这是旧的表结构(从 DBF 导入 mssql)

[NUMBER] [int] NULL,
[LASTNAME] [char](30) NULL,
[FIRSTNAME] [char](20) NULL,
[TITLE] [char](5) NULL,
[SALUTATION] [char](25) NULL,
[ADD1] [char](30) NULL,
[ADD2] [char](30) NULL,
[ADD3] [char](30) NULL,
[TOWN] [char](30) NULL,
[COUNTY] [char](30) NULL,
[POSTCODE] [char](8) NULL,
[TELEPHONE] [char](30) NULL,
[TYPE] [char](1) NULL,
[PAID] [char](1) NULL,
[COMMITTEE] [char](30) NULL,
[WARNINGS] [int] NULL,
[MONTHDRAW] [int] NULL,
[WOMANS] [char](1) NULL,
[SENIORCIT] [char](1) NULL,
[DOB] [datetime] NULL,
[AMOUNTCLUB] [decimal](6, 2) NULL,
[DATEPAY] [datetime] NULL,
[AMOUNTBRAN] [decimal](6, 2) NULL,
[AMOUNTDUE] [decimal](6, 2) NULL

这是新表:

[MemberID] [nvarchar](10) NOT NULL,
[Title] [nvarchar](10) NOT NULL,
[FirstName] [nvarchar](50) NOT NULL,
[Surname] [nvarchar](50) NOT NULL,
[HouseNumber] [nvarchar](25) NULL,
[Street] [nvarchar](25) NULL,
[City] [nvarchar](25) NULL,
[County] [nvarchar](25) NULL,
[Postcode] [nvarchar](10) NULL,
[TelephoneNumber] [nvarchar](15) NULL,
[MobileNumber] [nvarchar](15) NULL,
[EmailAddress] [nvarchar](50) NULL,
[DOB] [date] NULL,
[Age] [nvarchar](10) NULL,
[SeniorCitizen] [nvarchar](5) NULL,
[Warnings] [nvarchar](50) NULL,
[MembershipCategory] [nvarchar](20) NULL,
[ServiceBranch] [nvarchar](20) NULL,
[Paid] [nvarchar](10) NULL,
[ToPay] [float] NULL,
[DatePaidIn] [date] NULL,
[Entry] [tinyint] NULL,
[FOB] [nvarchar](10) NULL,
[JoinDate] [date] NULL,
[SubscriptionYear] [date] NULL,
[TotalPaid] [float] NULL,

我正在写这样的插入;

INSERT INTO [dbo].[MemberDetails] 
([MemberID],[Title],[FirstName],[Surname],[HouseNumber],[Street],[City],[County],[Postcode],[TelephoneNumber],[MobileNumber],[EmailAddress],[DOB],[Age],[SeniorCitizen],[Warnings],[MembershipCategory],[ServiceBranch],[Paid],[ToPay],[DatePaidIn],[Entry],[FOB],[JoinDate],[SubscriptionYear],[TotalPaid])
SELECT [NUMBER], [TITLE], [FIRSTNAME], [LASTNAME], [ADD1], [ADD2], [TOWN], [COUNTY], [POSTCODE], [TELEPHONE]
FROM [dbo].[MEMBERS] 
GO

我到了该列然后意识到“我如何处理空值,因为旧表中没有人有移动记录?”我还需要为旧表值选择 AS“新列名”吗?

【问题讨论】:

    标签: sql sql-server import


    【解决方案1】:

    假设您从OldTable 转到NewTable,将answer 列添加到原来的question 列:

    insert  NewTable
            (question, answer)
    select  question
    ,       '42' -- Specify a literal or default value
    from    OldTable
    

    您也可以从insert 列表中省略新列:

    insert  NewTable
            (question)
    select  question
    from    OldTable
    

    这将复制question 列并将默认值null 放入answer 列中。

    您不必在选择列表中使用别名。它是严格基于顺序的。这样可以正常工作:

    insert  NewTable
            (question)
    select  question as CeciNEstPasUnePipe
    from    OldTable
    

    【讨论】:

    • 我刚刚在 IRC 上问过这个问题,现在我觉得自己真的很愚蠢……不过还是谢谢你 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    相关资源
    最近更新 更多