質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

1回答

1168閲覧

SSISでCSVから読み込んだデータを別の行にコピーするには?

ngc

総合スコア12

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2018/10/13 17:06

前提・実現したいこと

MicrosoftのSSIS(SQL Server Integration Services)でCSVを読み込み、データベースに登録する処理を作成しています。
このCSVファイルは行の順番に意味があり、数行にわたるブロックごとにデータが分かれている構造になっています。

例としては以下のような構造になっています。

列1列2列3
ブロック番号1A01B01
A02B02
A03B03
ブロック番号2A04B04
A05B05
A06B06

このファイルを順番に読み取り、以下のようにブロック番号を補完したいのですが、どのようにするのがよろしいでしょうか。

列1列2列3
ブロック番号1A01B01
ブロック番号1A02B02
ブロック番号1A03B03
ブロック番号2A04B04
ブロック番号2A05B05
ブロック番号2A06B06

SSISの処理についてはかなり初心者で、スクリプトを書かなければいけないのであれば、SSISは諦めてBULK INSERT時に行番号を連番に振ったうえで、SQLで処理しようかとも考えています。

SSISで上記の処理を簡単に実現する方法があれば教えていただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

考え方だけ述べます。
CSVファイルを読込順番号フィールド(自動指定のプライマリーキーでよい)をキー項目として先頭に付加して、SQLテーブルとしてインポートします。
そして、そのテーブルで自分のレコードのブロック番号フィールドが空ならば、自分のレコードの手前のレコードのブロック番号フィールドをコピーするようなアップデートをかけます。
ブロック番号が空のレコードのみで、自分の読込順番号未満で最大の読込順番号のレコードのブロック番号を取り出して埋め込むというSQL文を書くことができればできるでしょう。

投稿2018/10/14 00:52

編集2018/10/16 14:13
seastar3

総合スコア2285

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ngc

2018/10/16 00:09

ありがとうございます。その方法でやってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問