C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: CSVファイル同士でのSQL的な結合


(過去ログ 112 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■66279 / inTopicNo.1)  CSVファイル同士でのSQL的な結合
  
□投稿者/ どっとくりあ (5回)-(2013/04/12(Fri) 14:51:52)

分類:[.NET 全般] 

これは先のスレッド
C# C++ ? の続きです。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=66239

最初にお問い合わせさせて頂いた内容と異なって来た為に、新しいスレッドとさせて頂きます。
また、沢山の方にご教授頂き、自分では解決したと思っていますが、そのお礼とご報告の為に
以下に記載致します。
大変有り難う御座いました。

CSVファイル同士でのSQL的な結合をやりたいわけですが。
以下のエラーが出力され、質問させて頂きました。
ERROR [07002] [Microsoft][ODBC Text Driver] パラメータが少なすぎます。2 を指定してください。

結果は、データベース自体の内容が間違っている為のエラーでした。
カラム名F1をつけていなかった。
以上、まだSQL文の詳細は理解できていないところがありますが、とりあえず希望通りには
なりましたので、あとは自分で調べればokと思ってますので、一応解決とさせて頂きます。
大変有り難う御座いました。


Text1.csv テーブル内容
T1 F1 T1-2
1 佐藤 201
2 吉田 202
3 近藤 203
4 伊藤 204
5 田中 205

Text2.csv テーブル内容
T2 F1 T2-2
1 伊藤 福島県
2 田中 鳥取県
3 近藤 茨城県
4 佐藤 東京都
5 吉田 長野県

処理結果表示
T1,F1,T1-2,T2,F1,T2-2
1,佐藤,201,4,佐藤,東京都
2,吉田,202,5,吉田,長野県
3,近藤,203,3,近藤,茨城県
4,伊藤,204,1,伊藤,福島県
5,田中,205,2,田中,鳥取県


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.Odbc;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{


string csvDir = @"C:\tmp";
string csvFileName = "Text1.csv";
string csvFileName2 = "Text2.csv";

//ODBC接続文字列を組み立てる
OdbcConnectionStringBuilder builder = new OdbcConnectionStringBuilder();
builder["Driver"] = "Microsoft Text Driver (*.txt; *.csv)";
builder["dbq"] = csvDir;
builder["Extension"] = "text;HDR=No;FMT=Delimited\"";

System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
sw.Start();

using (OdbcConnection con = new OdbcConnection(builder.ConnectionString))
{
con.Open();
//string strSQL = "SELECT T1.* FROM (" + csvFileName + " T1 INNER JOIN " + csvFileName2 + " T2 ON T1.F1=T2.F1)";
string strSQL = "SELECT * FROM (" + csvFileName + " T1 INNER JOIN " + csvFileName2 + " T2 ON T1.F1=T2.F1)";

using (OdbcCommand cmd = new OdbcCommand(strSQL, con))
using (OdbcDataReader rd = cmd.ExecuteReader())
{
StringBuilder sb = new StringBuilder();
//カラム名を取得し、カンマ区切りで編集します
for (int col = 0; col < rd.FieldCount; col++)
{
sb.Append(rd.GetName(col)).Append(",");
}
sb.Remove(sb.Length - 1, 1);
System.Diagnostics.Debug.WriteLine(sb);

//データを取得しカンマ区切りで編集します
while (rd.Read())
{
sb.Length = 0;
for (int col = 0; col < rd.FieldCount; col++)
{
sb.Append(rd.GetValue(col)).Append(",");
}
sb.Remove(sb.Length - 1, 1);
System.Diagnostics.Debug.WriteLine(sb);
}
}
}
sw.Stop();
label1.Text = String.Format("完了{0:#,##0}ms", sw.ElapsedMilliseconds);
}
}
}
引用返信 編集キー/
■66280 / inTopicNo.2)  Re[1]: CSVファイル同士でのSQL的な結合
□投稿者/ どっとくりあ (6回)-(2013/04/12(Fri) 14:52:26)
大変お手数をおかけしました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -