日別アーカイブ: 2024年10月8日

dyneinを使ってエクセルのデータをDynamoDBへImportする

少し前に紹介したDynamoDBの操作ツールであるdynein。実際に少し使い始めています。

dynein
https://github.com/awslabs/dynein

取り込むデータはExcelで作成して、それを元にCSVファイルを作成、dyコマンドで取り込もうとしたのですが、、、CSVファイルの取り込みがイマイチでした。。。

そもそも、カラムとしてリスト形式の値を持つものもあるので、CSV形式だとちょっと無理があったかもしれませんが、それにしてもCSV形式の取り込みとしては少し癖がありそうでした。

というわけでJSON形式での取り込みに変更しました。

エクセル上のデータをJSONへ吐き出す方法に関しては、VBAで書いたのですが、VBAでUTF-8形式のファイルを作成するのって結構面倒なんですね。。。

Sub SaveFileUTF8WithoutBOM(filePath As String, dataString As String)
    Dim adodb1 As Object
    Dim adodb2 As Object

    Set adodb1 = CreateObject("ADODB.Stream")
    Set adodb2 = CreateObject("ADODB.Stream")

    With adodb1
        .Charset = "UTF-8"
        .Open
        .WriteText dataString
        .Position = 3
        With adodb2
            .Type = 1
            .Open
            adodb1.CopyTo adodb2
            .SaveToFile filePath, 2
            .Close
        End With
        .Close
    End With
End Sub

一度、ファイルストリームを開いてから、BOM分だけずらし、その内容をコピーするという、何というかバイナリ操作が入るような。。。

VBAもいまだにこういうことをしないとUTF-8を書けないのだろうか?という気になります。もうちょっと何とかならんのですかね。