Windowsタスクマネージャーで定期的にAccessファイルを立ち上げて、
特定の場所にあるCSVファイルからテーブルにデータを取り込む処理を行いたいと思います。
CSVファイルは中国語のエンコードがされているため、合わせて指定をし、
ファイル名は「data_YYYY-MM-DD HHMM」として、HHまでを指定して取り込みます。
以下のURLを参考にしていますが。コードで教えていただければ。
http://accessclub.jp/bbs2/0047/beginter15165.html
文字コードを指定して CSV ファイルをインポートするには、schema.ini (※) にて CharacterSet(文字コード)を定義することで可能です。
※ schema.ini は、テキストドライバが CSV ファイルを読み込む際に、データ構造を定義するファイルになります。
<サンプル用フォルダ構成>
C:\home\edu\access\csv test.mdb … インポート先 MDB test.csv … インポート元 CSV(UTF-8 形式) schema.ini … test.csv 用定義ファイル ImportToMdbFromCsv.vbs … インポート用 VBScript
<Access / tbl_test テーブル定義>
フィールド名 | データ型 | |
---|---|---|
主キー | field1 | 数値型 |
field2 | 短いテキスト | |
field3 | 短いテキスト |
<schema.ini>
[test.csv] ColNameHeader=True Format=CSVDelimited CharacterSet=65001 Col1=field1 Integer Col2=field2 Text Width 256 Col3=field3 Text Width 256
<test.csv>
"field1","field2","field3"
1,"こんにちは","日本語テスト"
2,"你好","中国語テスト"
3,"안녕하세요","韓国語テスト"
<ImportToMdbFromCsv.vbs>
' File Name : ImportToMdbFromCsv.vbs ' Usage : CScript ImportToMdbFromCsv.vbs Option Explicit ' コードの簡略化の為、取り込み元ファイル名は「test.csv」としています。 ' また、エラー処理(重複チェック等)は一切入っていない為、使用の際は適宜修正をお願いします。 Const strFilePath = "C:\home\edu\access\csv" Const strMdbName = "test.mdb" ' インポート先MDB Const strCsvName = "test.csv" ' インポート元CSV Call Main() Sub Main() Dim cn Set cn = CreateObject("ADODB.Connection") cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & strFilePath & "\" & strMdbName Dim strSQL strSQL = "INSERT INTO tbl_test " & _ "SELECT * FROM " & "[Text;Database=" & strFilePath & "].[" & strCsvName & "]" cn.Execute strSQL End Sub
<実行方法>
C:\C:\home\edu\access\csv> CScript ImportToMdbFromCsv.vbs
<実行結果>
field1 | field2 | field3 |
---|---|---|
1 | こんにちは | 日本語テスト |
2 | 你好 | 中国語テスト |
3 | 안녕하세요 | 韓国語テスト |
<参考>
■ 備忘録: ADODBでUTF-8のCSVを取り込む
http://my-business-adversaria.blogspot.jp/2012/08/adodbutf-8csv.html
■ テキスト ファイルのフィールドを定義する方法
http://blog.esrij.com/arcgisblog/2010/06/schemaini-301f.html
コメント(0件)