@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

CSVファイルのSQL文

投稿者投稿内容
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-04-27 22:12
こんにちは。
VB 6で開発してます。

CSVファイルをDBとしてSQLを実行させていますが、一部のSQLがエラーとなってしまいます。
"SELECT * FROM TEST.csv WHERE [AA] LIKE '%ああ%'"

CSVファイルの形式は"aああa","bbb"のように全てダブルクォーテーションでくくった
文字列です。

お分かりになりましたら、よろしくお願いします。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2008-04-28 12:27
ど ん な エ ラ ー が 出 た ん だ い?

エラー内容を提示してくれなきゃ、答えられないって。
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-04-28 13:41
ありがとうございます。

エラー内容は、構文エラーで演算子がありません、とでました。
like文なんですけど・・。

何かお分かりになりましたら、よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-28 17:22
引用:

未記入さんの書き込み (2008-04-28 13:41) より:

エラー内容は、構文エラーで演算子がありません、とでました。
like文なんですけど・・。


そうですね。 問題なのは LIKE 演算子周辺でしょうね。 それだけ自分で調査できるならそのまま自己解決できそうです。 ときに "[AA]" とはなんでしょうか? どのデータ プロバイダを使っているのか知りませんが、データ プロバイダさんは列名を知っているのでしょうか。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-04-28 17:44
ありがとうございます。

VB6での開発でして、[]内は列名となってます。
条件式で=のものは正常に取得できてます。

例えば、こんなSQLもあるのですが、取得できてます。
Select * From TEST.csv where ([BB]='0' or [BB]='1') ORDER BY [BB],[AA]

プロバイダは

Public Const DRIVER = "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ="
Public Const PRVDER = "Provider=MSDASQL;Extended Properties="""

Public uCN As New ADODB.Connection
Public uRS As New ADODB.Recordset

uCN.ConnectionString = PRVDER & DRIVER & "C:\" & """"
uCN.Open
Set uRS = uCN.Execute("SQL文")

で取得しています。

自己解決どころか、あらゆるSQL文を試して同じ構文エラーとなる為、
like文はサポートされていないのかと途方にくれてます。
upadateなどの更新系もうまくいかず(これはInsertのみサポート?)、
やっぱりCSVをDBとして使うのは難しいのかと悩んでます。

ただ、PostgreSQLのODBCもうまくいかず・・。
VB 6って・・。

何かご存知でしたらよろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-04-30 12:02
引用:

未記入さんの書き込み (2008-04-28 17:44) より:

VB6での開発でして、[]内は列名となってます。
条件式で=のものは正常に取得できてます。


CSV ファイルにヘッダとしてそのフィールド名があれば問題ないハズです。

引用:

Public Const DRIVER = "DRIVER={Microsoft Text Driver (*.txt; *.csv)};DBQ="
Public Const PRVDER = "Provider=MSDASQL;Extended Properties="""


ConnectionString が妙な気がしますね。

コード:

    Dim stConnectionString As String

    stConnectionString = ( _
        "Driver={Microsoft Text Driver (*.txt; *.csv)};" & _
        "DBQ=C:\Hoge\;" _
    )


で十分のハズです。

引用:

自己解決どころか、あらゆるSQL文を試して同じ構文エラーとなる為、
like文はサポートされていないのかと途方にくれてます。


そんなことはありません。 当方では動作は確認済みです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
ベテラン
会議室デビュー日: 2007/09/29
投稿数: 78
投稿日時: 2008-04-30 18:44
ありがとうございます。

ご指摘の通りやってみました。
それでもエラーとなってしまい、省略はできても振り出し・・。

と、思いきや、条件式のandが抜けている事に気付きました。
like周辺ばかりいじっていましたが、お恥ずかしい限りです。
ここに書き込んだSQL文も省略したもので申し訳ありません、
ちょうど、CSVのファイルフォーマットを全て''くくりにした所で、
様式の違いとばかり思い込んでしまいました。


無事、私の方も動作確認できました。ありがとうございます。

また、Insert,Delete,Update文のSQLについてですが、
これはドライバとして元々無理なのでしょうか?
MSDNのサイトにそれらしい文言はありましたが、
出来た事があると言う方ございましたら、ご意見いただければ幸いです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-05-01 11:45
引用:

未記入さんの書き込み (2008-04-30 18:44) より:

また、Insert,Delete,Update文のSQLについてですが、
これはドライバとして元々無理なのでしょうか?


内部的にはリンクテーブル扱いですので、変更が発生する SQL コマンドの発行はできません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)