• ベストアンサー

SQLのINSERT文での利用者一括登録

会社のほうで、500人くらいのスタッフを管理するシステムを入れています。 自分はシステムの直接の担当ではないのです。専門家でもないです。MSのACCESSで初歩的な売上管理のDBは作成したことはあるレベルです。 スタッフの入力を現在、画面上のフォーマットでひとつひとつやっているのですが、 CSVで入れるようなシステムはついていません。 この挿入を、SQLのinsert文で、一気にやることは、それほど詳しくない素人レベルでは可能でしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • TIGANS
  • ベストアンサー率35% (245/681)
回答No.1

普通にやるなら、CSVをExcelで読み込んで ACCESSなどのDBにインポートすればよいのでは? https://www.kenschool.jp/blog/?p=3096 汎用なポータブルinsert文にしたいならばsqliteを使って csvをインポートして、DBをdump出力すれば、3分あれば変換可能でしょう。 https://qiita.com/Kunikata/items/61b5ee2c6a715f610493 https://www.dbonline.jp/sqlite/manage/index4.html ただしimportに先立ってTABLE定義を行わないと CSV内の数字も文字列として認識されてimportされてdumpされます。

spongetak
質問者

お礼

ありがとうございます。 ある程度の勉強は必要のようですね。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

【訂正】添付図のミスを訂正しました。 Replace()とCutStr()を利用して、val_1、val_2、val_3 を AAA、BBB、CCCに書き換えています。

すると、全ての回答が全文表示されます。
回答No.2

Q、データインポートを一気にやることは、素人レベルでは可能でしょうか? A、仕組みを作る手間暇より入力した方が速いし確実。 理由1、スタッフデータをテキストファイルにする必要がある。 理由2、データインポートプログラムをVBAで書く必要がある。 という前提で、私流の【データインポートプリグラムの仕様】を示します。 ・データテキストを配列に読み込む。 ・For-Next でデータをINSERTする。 これが仕様の全て。書くべきプログラムコードで利用する関数は、次のようです。 【FileReadArray関数】 Public Function FileRaedArray(ByVal FileName As String) As String() On Error GoTo Err_FileReadArray   Dim fso    As FileSystemObject   Dim fil    AS File   Dim txs    As TextStream   Dim strText  AS String   Dim strTexts() AS String      Set fso = New FileSystemObject   Set fil = fso.GetFile(FileName)   Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault)   strText = txs.ReadAll   strTexts = Split(strText, Chr$(13) & Chr$(10)) Exit_FileReadArray:   FileReadArray = strTexts()   Exit Function Err_FileReadArray:   MsgBox Err.Description & "(FileReadArray)", vbExclamation, " 関数エラーメッセージ"   strTexts() = Split("")   Resume Exit_FileReadArray End Function 【FileReadArray関数のテスト】 Private Sub コマンド0_Click()   Dim strTexts() As String      strTexts() = FileReadArray("Test.txt")   If UBound(strTexts()) > -1 Then     Debug.Print strTexts(0)     Debug.Print strTexts(1)   End If End Sub ________________________________________________________ [イミディエイト]                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1: AA 2: BB FileReadArray()は、このように各行を一つのデータとして読み込みます。これに成功したら For-Next で次のSQL文を実行するだけです。 INSERT INTO tablename (field_1,field_2・・・Field_N) VALUES (val_1,val_2・・・,val_N); 【val_1,val_1,val_2・・・,val_N の置換要領】 置換要領は、添付図を参照されてください。Replace()とCutStr()で前述のINSERT文の雛形のValuesの値を登録データと置換します。 Public Function CutStr(ByVal Text As String, _             ByVal Separator As String, _             ByVal N As Integer) As String   Dim strDatas() As String      strDatas = Split("" & Separator & Text, Separator, , 0)   CutStr = strDatas(N * Abs(N <= UBound(strDatas))) End Function 後は、SQL文を実行するだけです。

spongetak
質問者

お礼

ありがとうございます。 ある程度の勉強は必要のようですね。

すると、全ての回答が全文表示されます。

関連するQ&A