0

たとえば、テーブルを含む SQL Server データベースが 1 つあります。

Id          Address
1  England,London,someaddress
2  Germany,Berlin,someaddress2

そして、スキームを含む次のテーブルを含む別のSQL Serverデータベースがあります

 Id  Country City Address

最初のデータベースから 2 番目のデータベースにデータを転送する必要があります。このような。

id  Country    City    Address
 1  England   London   someaddress
 2  Germany   Berlin   someaddress2

どうやってやるの?

4

3 に答える 3

1

これを行うには、分割によってUser Define Functionを検出Countryし、2 番目のテーブルに挿入する を作成します。 CityAddress

分割機能 :

CREATE FUNCTION [dbo].[Split](@String varchar(8000), @Delimiter char(1))       
returns @temptable TABLE (id int , items varchar(8000))       
as       
begin       
    declare @idx int
    declare @id int       
    declare @slice varchar(8000)       

    set @id = 1
    select @idx = 1       
        if len(@String)<1 or @String is null  return       

    while @idx!= 0       
    begin       
        set @idx = charindex(@Delimiter,@String)       
        if @idx!=0       
            set @slice = left(@String,@idx - 1)       
        else       
            set @slice = @String       

        if(len(@slice)>0)  
        begin
            insert into @temptable(id, Items) values( @id , @slice)       
            set @id = @id + 1
        end

        set @String = right(@String,len(@String) - @idx)       
        if len(@String) = 0 break       
    end   
return       
end

次に、次のように挿入クエリで使用します。

INSERT INTO NewTbl
SELECT .... , 
     (SELECT ITEMS FROM dbo.Split(Address) where id = 1) as Country,
     (SELECT ITEMS FROM dbo.Split(Address) where id = 2) as City,
     (SELECT ITEMS FROM dbo.Split(Address) where id = 3) as Address,
...
于 2013-03-19T14:12:56.580 に答える
0

実際にデータを移動するには、いくつかの方法があります。

1.) リンク サーバーhttp://msdn.microsoft.com/en-us/library/ms188279.aspx

2.) OpenRowSet http://msdn.microsoft.com/en-us/library/ms190312.aspx

3.) レプリケーションhttp://msdn.microsoft.com/en-us/library/ms151198.aspx

ニーズに応じて、最適なものを選択する必要があります。

2番目のデータベースのデータを元のデータベースでアクセスできるようにしたい場合は、それ自体のデータと同じように、クエリ、ストアドプロシージャなどのためにリンクサーバーを見てください。

データへの 1 回限りのアクセスが必要な場合は、OpenRowSet をご覧ください。

両方のデータベースに同じテーブルがあり、そのデータを自動的に同期させたい場合は、レプリケーションを検討します。分割などのカスタム ロジックを実行できる独自のレプリケーション ストアド プロシージャを設定できます。

次に、他の回答に記載されているように分割を実装して、データを分割できます。

于 2013-03-19T15:54:24.397 に答える