3

2 つの異なるデータベースに 2 つのテーブルがあります。最初のテーブル (顧客) には、10 ~ 12 列の多数のデータがあります。次に、2 番目のテーブル (CustomersNew) があり、名前データ型が異なるだけで、Customers と同じ列を表す新しい列があります。CustomerNew は現在空です。すべてのデータをテーブル Customers からテーブル CustomersNew に移動したいと考えています。

ここで重要なのは、テーブルの顧客の UserID 列のデータ型がuniqueidentifier であり、顧客の新規 ID 列のデータ型がintであることです。したがって、残りの列と同様に、データ型が一致しません。

A から B にデータを移動するにはどうすればよいですか?

編集: MS-SQLを使用しています

4

3 に答える 3

1

私はINSERT INTO CustumersNew(<column list>) SELECT <column list from Custumers CONVERTed to data types that match the data type of corresponding columns in CustumersNew> FROM Custumersステートメントを使用します。

例えば

INSERT INTO CustumersNew(UserId, Name, Age)
SELECT UserId, CONVERT(NVARCHAR(128), Name), CONVERT(INT, Age) 
FROM Custumers

これら 2 つのテーブルでは、Name と Age は異なる型であると想定しています。同様の convert ステートメントを記述して、データ型の引数を CustomerNew テーブルのデータ型と一致させる必要があります。

UserId/CustomerId はuniqueidentifier整数にマッピングできず、機能的な観点からこの列の値の関連性が疑わしいため、新しいテーブルでUserId/CustomerId をAUTO/列としてモデル化します。IDENTITY

于 2012-10-01T11:16:26.640 に答える
0

uniqueidentifierまあ、列に aを格納することはできないintので、新しいキーのセットを考え出す必要があります。

ほとんどのデータベース システムには、整数値を持つレコードに連続番号を付けるメカニズムが用意されています。SQL ServerではIDENTITY列を使用し、Oraclesequencesではauto_increment.

新しいテーブルを (自動番号付け方式で) セットアップしたら、SQL を使用してデータを挿入するだけです。

INSERT INTO CUSTOMERS_NEW (COL2, COL3, COL4) SELECT COL2, COL3, COL4 FROM CUSTOMERS

insert ステートメントには ID 列が含まれていないことに注意してください。ID 列は自動的に入力されます。

于 2012-10-01T11:19:39.170 に答える