CSVファイルの加工とインポート (3)

  データベースへのインポート



  
#include "stdafx.h"

#define MyEXTERN
#include "BAT.h"

// *********************************************************
// エントリポイント
// *********************************************************
int main(int argc, char* argv[])
{
	int nRet;
	
	nRet = 0;

	if ( argc != 2 ) {
		printf( "%s\n", "引数に誤りがあります" );
		nRet = 1;
		return nRet;
	}

	InitProc();

	START_BLOCK

		BOOL bRet;

		bRet = TxtIn.ReadOpen( argv[1] );
		if ( !bRet ) {
			printf( "%s\n", "入力ファイルをオープンできませんでした" );
			nRet = 1;
			break;
		}
		if ( !CurDb->Connect() ) {
			TxtIn.Close();
			printf( "%s\n", "データベースの接続に失敗しました");
			nRet = 1;
			break;
		}	

		// 既存の入力用テーブルを削除
		Query->operator = (
			"drop table 郵便番号インポート"
		);
		CurDb->Query( Query );
		// 入力用テーブルを作成
		Query->operator = (
			"create table 郵便番号インポート ("
			"郵便番号 varchar(7)"
			",都道府県名カタカナ varchar(50)"
			",市区町村名カタカナ varchar(50)"
			",町域名カタカナ varchar(50)"
			",都道府県名 varchar(50)"
			",市区町村名 varchar(50)"
			",町域名 varchar(50)"
			")"
		);
		if ( !(CurDb->Query( Query )) ) {
			CurDb->DisConnect();
			TxtIn.Close();
			printf( "%s\n", "テーブル作成に失敗しました");
			nRet = 1;
			break;
		}
		printf( "%s\n", "テーブル作成を終了しました");

		int nInCount,nOutCount,nErrCount;
		nInCount = nOutCount = nErrCount = 0;

		printf( "%s\n", "インポートを開始します");
		Buff->Resize( 10000 );
		while( TxtIn.Get( Buff ) ) {
			nInCount++;
			Buff->RemoveLastchar();
			Token.CreateToken( Buff, "," );
			Work->operator = (
				"insert into 郵便番号インポート"
				" values("
			);
			// 郵便番号(7桁)
			Item->operator = (Token.Token[0]);
			Item->Enclose( "'" );
			Work->operator += (Item);
			Work->operator += (",");
			// 都道府県名(半角カタカナ)
			Item->operator = (Token.Token[1]);
			Item->Enclose( "'" );
			Work->operator += (Item);
			Work->operator += (",");
			// 市区町村名(半角カタカナ)
			Item->operator = (Token.Token[2]);
			Item->Enclose( "'" );
			Work->operator += (Item);
			Work->operator += (",");
			// 町域名(半角カタカナ)
			Item->operator = (Token.Token[3]);
			Item->Enclose( "'" );
			Work->operator += (Item);
			Work->operator += (",");
			// 都道府県名
			Item->operator = (Token.Token[4]);
			Item->Enclose( "'" );
			Work->operator += (Item);
			Work->operator += (",");
			// 市区町村名
			Item->operator = (Token.Token[5]);
			Item->Enclose( "'" );
			Work->operator += (Item);
			Work->operator += (",");
			// 町域名
			Item->operator = (Token.Token[6]);
			Item->Enclose( "'" );
			Work->operator += (Item);
			Work->operator += (")");
			if ( CurDb->Query( Work ) ) {
				nOutCount++;
			}
			else {
				nErrCount++;
				if ( nErrCount == 1 ) {
					printf( "%s\n", Work->szLboxString );
				}
			}
		}

		CurDb->DisConnect();
		TxtIn.Close();

		printf( "入力件数   = %d\n", nInCount );
		printf( "出力件数   = %d\n", nOutCount );
		printf( "エラー件数 = %d\n", nErrCount );
		printf( "%s\n", "インポートが終了しました");

	END_BLOCK

	EndProc();

	return nRet;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ