皆様
どうぞ、ご教授ください。
CSVをMDBに取り込む処理を書いているのですが、
そのCSVの1行目をどうしてもスキップさせる必要性があります。
可能な限り"INSERT INTO "で取り込む方法は変えたくないので
CSVの1行目だけを飛ばして処理を開始するようにしたいのですが
どのように記述すればいいものなのでしょうか。
どうかよろしくお願いいたします。
Public Sub Import(strDbPath As String, strTblName As String, strTxtPath As String)
Dim ws As Workspace
Dim db As Database
Dim rs As Recordset
Dim wsTxt As Workspace
Dim dbTxt As Database
Dim rsTbl As Recordset
Dim strConnect As String
Dim strSql As String
Dim intRet As Integer
On Error GoTo ErrHandler
Set wsTxt = DBEngine.Workspaces(0)
Set dbTxt = wsTxt.OpenDatabase(StripFileName(strTxtPath), 0, 0, "Text;")
Set ws = DBEngine.Workspaces(0)
Set db = ws.OpenDatabase(strDbPath, False, False)
strConnect = "[Text;database=" & StripFileName(strTxtPath) & "]."
'テーブルにテキストデータの内容を追加(見出しレコードは必要 ※2行目)
strSql = "INSERT INTO " & strTblName & " SELECT * FROM " & strConnect & MakeFilename(strTxtPath)
db.Execute strSql
db.Close
dbTxt.Close
ws.Close
wsTxt.Close
Exit Sub
ErrHandler:
intRet = MsgBox("<" & Err & ">" & Error(Err), vbOKOnly, "Import")
End Sub
素人でもすぐに思いつくのは一時ファイルを作成して
2行目以降のデータをコピーし、そのファイルを
読み込む。
HDRをYESにするとかNOにするとかいう話では?
みなさま
ありがとうございます。
HDR = NO はどこにいれればいいのでしょうか?
入れることができません。。
教えてさんでもうしわけございませんが
よろしくお願いいたします。
ここの過去ログ検索『HDR』でサンプルが引っ掛かりますが?
ありがとうございます。
HDR = NO は1行目を列見出しに設定しないというものであり、
確かに1行目は飛ばしたいのですが、2行目を列見出しにしたいので
適さないように思われます。
(列見出しが設定されない。)
他に方法はございますでしょうか??
> strConnect = "[Text;database=" & StripFileName(strTxtPath) & "]."
JetのText I-ISAMを使った手法では、データ行の読み飛ばしはできません。
インポート後、余計な行を削除するようにして見てください。
なお、列名については SCHEMA.INI にて指定可能です。
ツイート | ![]() |