mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-04-05 20:31:00 +08:00
Add function mdb_read_table_by_name
This commit is contained in:
parent
30e79efcce
commit
3d47cc5570
15
ChangeLog
15
ChangeLog
@ -1,3 +1,18 @@
|
|||||||
|
Fri Jul 2 07:27:32 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
|
||||||
|
* src/libmdb/backend.c:
|
||||||
|
* src/libmdb/table.c:
|
||||||
|
* src/sql/mdbsql.c:
|
||||||
|
* src/util/mdb-array.c:
|
||||||
|
* src/util/mdb-export.c:
|
||||||
|
* src/util/mdb-import.c:
|
||||||
|
* src/util/mdb-prop.c:
|
||||||
|
* src/util/prdata.c:
|
||||||
|
* src/util/prindex.c:
|
||||||
|
* src/util/prole.c:
|
||||||
|
* src/util/sargtest.c:
|
||||||
|
* src/util/updrow.c:
|
||||||
|
* include/mdbtools.h: Add function mdb_read_table_by_name
|
||||||
|
|
||||||
Wed Jun 23 23:19:43 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
|
Wed Jun 23 23:19:43 CDT 2004 Jeff Smith <whydoubt@yahoo.com>
|
||||||
* src/libmdb/table.c:
|
* src/libmdb/table.c:
|
||||||
* src/util/mdb-array.c:
|
* src/util/mdb-array.c:
|
||||||
|
@ -416,6 +416,7 @@ extern char *mdb_get_objtype_string(int obj_type);
|
|||||||
extern MdbTableDef *mdb_alloc_tabledef(MdbCatalogEntry *entry);
|
extern MdbTableDef *mdb_alloc_tabledef(MdbCatalogEntry *entry);
|
||||||
extern void mdb_free_tabledef(MdbTableDef *table);
|
extern void mdb_free_tabledef(MdbTableDef *table);
|
||||||
extern MdbTableDef *mdb_read_table(MdbCatalogEntry *entry);
|
extern MdbTableDef *mdb_read_table(MdbCatalogEntry *entry);
|
||||||
|
extern MdbTableDef *mdb_read_table_by_name(MdbHandle *mdb, gchar *table_name, int obj_type);
|
||||||
extern void mdb_append_column(GPtrArray *columns, MdbColumn *in_col);
|
extern void mdb_append_column(GPtrArray *columns, MdbColumn *in_col);
|
||||||
extern void mdb_free_columns(GPtrArray *columns);
|
extern void mdb_free_columns(GPtrArray *columns);
|
||||||
extern GPtrArray *mdb_read_columns(MdbTableDef *table);
|
extern GPtrArray *mdb_read_columns(MdbTableDef *table);
|
||||||
|
@ -258,22 +258,7 @@ char *mdb_get_relationships(MdbHandle *mdb)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (is_init == 0) {
|
if (is_init == 0) {
|
||||||
MdbCatalogEntry *entry;
|
table = mdb_read_table_by_name(mdb, "MSysRelationships", MDB_TABLE);
|
||||||
|
|
||||||
mdb_read_catalog (mdb, MDB_TABLE);
|
|
||||||
|
|
||||||
/* loop over each entry in the catalog */
|
|
||||||
for (i=0; i < mdb->num_catalog; i++) {
|
|
||||||
entry = g_ptr_array_index (mdb->catalog, i);
|
|
||||||
if ((entry->object_type == MDB_TABLE) &&
|
|
||||||
(strncmp (entry->object_name, "MSysRelationships", 17) == 0))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (i == mdb->num_catalog) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
table = mdb_read_table (entry);
|
|
||||||
if ((!table) || (table->num_rows == 0)) {
|
if ((!table) || (table->num_rows == 0)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -117,6 +117,21 @@ MdbTableDef *mdb_read_table(MdbCatalogEntry *entry)
|
|||||||
|
|
||||||
return table;
|
return table;
|
||||||
}
|
}
|
||||||
|
MdbTableDef *mdb_read_table_by_name(MdbHandle *mdb, gchar *table_name, int obj_type)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
MdbCatalogEntry *entry;
|
||||||
|
|
||||||
|
mdb_read_catalog(mdb, obj_type);
|
||||||
|
|
||||||
|
for (i=0; i<mdb->num_catalog; i++) {
|
||||||
|
entry = g_ptr_array_index(mdb->catalog, i);
|
||||||
|
if (!strcasecmp(entry->object_name, table_name))
|
||||||
|
return mdb_read_table(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** read the next page if offset is > pg_size
|
** read the next page if offset is > pg_size
|
||||||
|
@ -574,7 +574,6 @@ void mdb_sql_describe_table(MdbSQL *sql)
|
|||||||
{
|
{
|
||||||
MdbTableDef *ttable, *table = NULL;
|
MdbTableDef *ttable, *table = NULL;
|
||||||
MdbSQLTable *sql_tab;
|
MdbSQLTable *sql_tab;
|
||||||
MdbCatalogEntry *entry;
|
|
||||||
MdbHandle *mdb = sql->mdb;
|
MdbHandle *mdb = sql->mdb;
|
||||||
MdbColumn *col;
|
MdbColumn *col;
|
||||||
int i;
|
int i;
|
||||||
@ -593,16 +592,7 @@ void mdb_sql_describe_table(MdbSQL *sql)
|
|||||||
|
|
||||||
sql_tab = g_ptr_array_index(sql->tables,0);
|
sql_tab = g_ptr_array_index(sql->tables,0);
|
||||||
|
|
||||||
mdb_read_catalog(mdb, MDB_TABLE);
|
table = mdb_read_table_by_name(mdb, sql_tab->name, MDB_TABLE);
|
||||||
|
|
||||||
for (i=0;i<mdb->num_catalog;i++) {
|
|
||||||
entry = g_ptr_array_index(mdb->catalog,i);
|
|
||||||
if (entry->object_type == MDB_TABLE &&
|
|
||||||
!strcasecmp(entry->object_name,sql_tab->name)) {
|
|
||||||
table = mdb_read_table(entry);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!table) {
|
if (!table) {
|
||||||
mdb_sql_error("%s is not a table in this database", sql_tab->name);
|
mdb_sql_error("%s is not a table in this database", sql_tab->name);
|
||||||
/* the column and table names are no good now */
|
/* the column and table names are no good now */
|
||||||
@ -670,7 +660,6 @@ void
|
|||||||
mdb_sql_select(MdbSQL *sql)
|
mdb_sql_select(MdbSQL *sql)
|
||||||
{
|
{
|
||||||
int i,j;
|
int i,j;
|
||||||
MdbCatalogEntry *entry;
|
|
||||||
MdbHandle *mdb = sql->mdb;
|
MdbHandle *mdb = sql->mdb;
|
||||||
MdbTableDef *table = NULL;
|
MdbTableDef *table = NULL;
|
||||||
MdbSQLTable *sql_tab;
|
MdbSQLTable *sql_tab;
|
||||||
@ -685,16 +674,7 @@ int found = 0;
|
|||||||
|
|
||||||
sql_tab = g_ptr_array_index(sql->tables,0);
|
sql_tab = g_ptr_array_index(sql->tables,0);
|
||||||
|
|
||||||
mdb_read_catalog(mdb, MDB_TABLE);
|
table = mdb_read_table_by_name(mdb, sql_tab->name, MDB_TABLE);
|
||||||
|
|
||||||
for (i=0;i<mdb->num_catalog;i++) {
|
|
||||||
entry = g_ptr_array_index(mdb->catalog,i);
|
|
||||||
if (entry->object_type == MDB_TABLE &&
|
|
||||||
!strcasecmp(entry->object_name,sql_tab->name)) {
|
|
||||||
table = mdb_read_table(entry);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!table) {
|
if (!table) {
|
||||||
mdb_sql_error("%s is not a table in this database", sql_tab->name);
|
mdb_sql_error("%s is not a table in this database", sql_tab->name);
|
||||||
/* the column and table names are no good now */
|
/* the column and table names are no good now */
|
||||||
|
@ -30,9 +30,8 @@
|
|||||||
int
|
int
|
||||||
main (int argc, char **argv)
|
main (int argc, char **argv)
|
||||||
{
|
{
|
||||||
int i, j;
|
int j;
|
||||||
MdbHandle *mdb;
|
MdbHandle *mdb;
|
||||||
MdbCatalogEntry *entry;
|
|
||||||
MdbTableDef *table;
|
MdbTableDef *table;
|
||||||
MdbColumn *col;
|
MdbColumn *col;
|
||||||
/* doesn't handle tables > 256 columns. Can that happen? */
|
/* doesn't handle tables > 256 columns. Can that happen? */
|
||||||
@ -51,15 +50,9 @@ int started;
|
|||||||
mdb_init();
|
mdb_init();
|
||||||
mdb = mdb_open (argv [1], MDB_NOFLAGS);
|
mdb = mdb_open (argv [1], MDB_NOFLAGS);
|
||||||
|
|
||||||
mdb_read_catalog (mdb, MDB_TABLE);
|
table = mdb_read_table_by_name (mdb, argv[2], MDB_TABLE);
|
||||||
|
if (table)
|
||||||
for (i = 0; i < mdb->num_catalog; i++)
|
|
||||||
{
|
|
||||||
entry = g_ptr_array_index (mdb->catalog, i);
|
|
||||||
if (entry->object_type == MDB_TABLE &&
|
|
||||||
!strcmp (entry->object_name, argv [2]))
|
|
||||||
{
|
{
|
||||||
table = mdb_read_table (entry);
|
|
||||||
mdb_read_columns (table);
|
mdb_read_columns (table);
|
||||||
mdb_rewind_table (table);
|
mdb_rewind_table (table);
|
||||||
|
|
||||||
@ -123,7 +116,6 @@ int started;
|
|||||||
|
|
||||||
mdb_free_tabledef(table);
|
mdb_free_tabledef(table);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
mdb_close (mdb);
|
mdb_close (mdb);
|
||||||
mdb_exit();
|
mdb_exit();
|
||||||
|
@ -49,9 +49,8 @@ print_col(gchar *col_val, int quote_text, int col_type)
|
|||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int i, j;
|
int j;
|
||||||
MdbHandle *mdb;
|
MdbHandle *mdb;
|
||||||
MdbCatalogEntry *entry;
|
|
||||||
MdbTableDef *table;
|
MdbTableDef *table;
|
||||||
MdbColumn *col;
|
MdbColumn *col;
|
||||||
/* doesn't handle tables > 256 columns. Can that happen? */
|
/* doesn't handle tables > 256 columns. Can that happen? */
|
||||||
@ -120,87 +119,75 @@ main(int argc, char **argv)
|
|||||||
mdb_init();
|
mdb_init();
|
||||||
|
|
||||||
if (!(mdb = mdb_open(argv[optind], MDB_NOFLAGS))) {
|
if (!(mdb = mdb_open(argv[optind], MDB_NOFLAGS))) {
|
||||||
|
g_free (delimiter);
|
||||||
|
g_free (row_delimiter);
|
||||||
|
mdb_exit();
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
table = mdb_read_table_by_name(mdb, argv[argc-1], MDB_TABLE);
|
||||||
|
if (!table) {
|
||||||
|
g_free (delimiter);
|
||||||
|
g_free (row_delimiter);
|
||||||
|
mdb_close(mdb);
|
||||||
|
mdb_exit();
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
mdb_read_columns(table);
|
||||||
|
mdb_rewind_table(table);
|
||||||
|
|
||||||
if (!mdb_read_catalog (mdb, MDB_TABLE)) {
|
for (j=0;j<table->num_cols;j++) {
|
||||||
fprintf(stderr,"File does not appear to be an Access database\n");
|
bound_values[j] = (char *) g_malloc0(MDB_BIND_SIZE);
|
||||||
exit(1);
|
mdb_bind_column(table, j+1, bound_values[j]);
|
||||||
|
mdb_bind_len(table, j+1, &bound_lens[j]);
|
||||||
}
|
}
|
||||||
|
if (header_row) {
|
||||||
for (i=0;i<mdb->num_catalog;i++) {
|
col=g_ptr_array_index(table->columns,0);
|
||||||
entry = g_ptr_array_index(mdb->catalog,i);
|
fprintf(stdout,"%s",col->name);
|
||||||
if (entry->object_type == MDB_TABLE &&
|
for (j=1;j<table->num_cols;j++) {
|
||||||
!strcmp(entry->object_name,argv[argc-1])) {
|
col=g_ptr_array_index(table->columns,j);
|
||||||
table = mdb_read_table(entry);
|
fprintf(stdout,"%s%s",delimiter,col->name);
|
||||||
mdb_read_columns(table);
|
|
||||||
mdb_rewind_table(table);
|
|
||||||
|
|
||||||
for (j=0;j<table->num_cols;j++) {
|
|
||||||
bound_values[j] = (char *) g_malloc(MDB_BIND_SIZE);
|
|
||||||
bound_values[j][0] = '\0';
|
|
||||||
mdb_bind_column(table, j+1, bound_values[j]);
|
|
||||||
mdb_bind_len(table, j+1, &bound_lens[j]);
|
|
||||||
}
|
|
||||||
if (header_row) {
|
|
||||||
col=g_ptr_array_index(table->columns,0);
|
|
||||||
fprintf(stdout,"%s",col->name);
|
|
||||||
for (j=1;j<table->num_cols;j++) {
|
|
||||||
col=g_ptr_array_index(table->columns,j);
|
|
||||||
fprintf(stdout,"%s%s",delimiter,col->name);
|
|
||||||
}
|
|
||||||
fprintf(stdout,"\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
while(mdb_fetch_row(table)) {
|
|
||||||
|
|
||||||
if (insert_statements) {
|
|
||||||
fprintf(stdout, "INSERT INTO %s (",
|
|
||||||
sanitize_name(argv[optind + 1],sanitize));
|
|
||||||
for (j=0;j<table->num_cols;j++) {
|
|
||||||
if (j>0) fprintf(stdout, ", ");
|
|
||||||
col=g_ptr_array_index(table->columns,j);
|
|
||||||
fprintf(stdout,"%s", sanitize_name(col->name,sanitize));
|
|
||||||
}
|
|
||||||
fprintf(stdout, ") VALUES (");
|
|
||||||
}
|
|
||||||
|
|
||||||
col=g_ptr_array_index(table->columns,0);
|
|
||||||
if (col->col_type == MDB_OLE) {
|
|
||||||
mdb_ole_read(mdb, col, bound_values[0], MDB_BIND_SIZE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (insert_statements && !bound_lens[0])
|
|
||||||
print_col("NULL",0,col->col_type);
|
|
||||||
else
|
|
||||||
print_col(bound_values[0],
|
|
||||||
quote_text,
|
|
||||||
col->col_type);
|
|
||||||
|
|
||||||
for (j=1;j<table->num_cols;j++) {
|
|
||||||
col=g_ptr_array_index(table->columns,j);
|
|
||||||
if (col->col_type == MDB_OLE) {
|
|
||||||
if (col->cur_value_len)
|
|
||||||
mdb_ole_read(mdb, col, bound_values[j], MDB_BIND_SIZE);
|
|
||||||
}
|
|
||||||
fprintf(stdout,"%s",delimiter);
|
|
||||||
if (insert_statements && !bound_lens[j])
|
|
||||||
print_col("NULL",0,col->col_type);
|
|
||||||
else
|
|
||||||
print_col(bound_values[j],
|
|
||||||
quote_text,
|
|
||||||
col->col_type);
|
|
||||||
}
|
|
||||||
if (insert_statements) fprintf(stdout,")");
|
|
||||||
fprintf(stdout,"%s", row_delimiter);
|
|
||||||
}
|
|
||||||
for (j=0;j<table->num_cols;j++) {
|
|
||||||
g_free(bound_values[j]);
|
|
||||||
}
|
|
||||||
mdb_free_tabledef(table);
|
|
||||||
}
|
}
|
||||||
|
fprintf(stdout,"\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
while(mdb_fetch_row(table)) {
|
||||||
|
|
||||||
|
if (insert_statements) {
|
||||||
|
fprintf(stdout, "INSERT INTO %s (",
|
||||||
|
sanitize_name(argv[optind + 1],sanitize));
|
||||||
|
for (j=0;j<table->num_cols;j++) {
|
||||||
|
if (j>0) fprintf(stdout, ", ");
|
||||||
|
col=g_ptr_array_index(table->columns,j);
|
||||||
|
fprintf(stdout,"%s", sanitize_name(col->name,sanitize));
|
||||||
|
}
|
||||||
|
fprintf(stdout, ") VALUES (");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (j=0;j<table->num_cols;j++) {
|
||||||
|
col=g_ptr_array_index(table->columns,j);
|
||||||
|
if ((col->col_type == MDB_OLE)
|
||||||
|
&& ((j==0) || (col->cur_value_len))) {
|
||||||
|
mdb_ole_read(mdb, col, bound_values[j], MDB_BIND_SIZE);
|
||||||
|
}
|
||||||
|
if (j>0) {
|
||||||
|
fprintf(stdout,"%s",delimiter);
|
||||||
|
}
|
||||||
|
if (insert_statements && !bound_lens[j]) {
|
||||||
|
print_col("NULL",0,col->col_type);
|
||||||
|
} else {
|
||||||
|
print_col(bound_values[j], quote_text, col->col_type);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (insert_statements) fprintf(stdout,")");
|
||||||
|
fprintf(stdout,"%s", row_delimiter);
|
||||||
|
}
|
||||||
|
for (j=0;j<table->num_cols;j++) {
|
||||||
|
g_free(bound_values[j]);
|
||||||
|
}
|
||||||
|
mdb_free_tabledef(table);
|
||||||
|
|
||||||
g_free (delimiter);
|
g_free (delimiter);
|
||||||
g_free (row_delimiter);
|
g_free (row_delimiter);
|
||||||
mdb_close(mdb);
|
mdb_close(mdb);
|
||||||
|
@ -150,7 +150,6 @@ main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
int i, row;
|
int i, row;
|
||||||
MdbHandle *mdb;
|
MdbHandle *mdb;
|
||||||
MdbCatalogEntry *entry;
|
|
||||||
MdbTableDef *table;
|
MdbTableDef *table;
|
||||||
MdbField fields[256];
|
MdbField fields[256];
|
||||||
unsigned char line[MAX_ROW_SIZE];
|
unsigned char line[MAX_ROW_SIZE];
|
||||||
@ -196,23 +195,15 @@ main(int argc, char **argv)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
mdb_read_catalog(mdb, MDB_TABLE);
|
table = mdb_read_table_by_name(mdb, argv[argc-2], MDB_TABLE);
|
||||||
|
|
||||||
for (i=0;i<mdb->num_catalog;i++) {
|
|
||||||
entry = g_ptr_array_index(mdb->catalog,i);
|
|
||||||
if (entry->object_type == MDB_TABLE &&
|
|
||||||
!strcmp(entry->object_name,argv[argc-2])) {
|
|
||||||
table = mdb_read_table(entry);
|
|
||||||
mdb_read_columns(table);
|
|
||||||
mdb_read_indices(table);
|
|
||||||
mdb_rewind_table(table);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!table) {
|
if (!table) {
|
||||||
fprintf(stderr,"Table %s not found in database\n", argv[argc-2]);
|
fprintf(stderr,"Table %s not found in database\n", argv[argc-2]);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
mdb_read_columns(table);
|
||||||
|
mdb_read_indices(table);
|
||||||
|
mdb_rewind_table(table);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* open the CSV file and read any header rows
|
* open the CSV file and read any header rows
|
||||||
*/
|
*/
|
||||||
|
@ -33,10 +33,9 @@ MdbHandle *mdb;
|
|||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int i, len, pos, col_num;
|
int len, pos, col_num;
|
||||||
MdbColumn *col;
|
MdbColumn *col;
|
||||||
MdbTableDef *table;
|
MdbTableDef *table;
|
||||||
MdbCatalogEntry *entry;
|
|
||||||
gchar name[256];
|
gchar name[256];
|
||||||
gchar buf[MDB_BIND_SIZE];
|
gchar buf[MDB_BIND_SIZE];
|
||||||
gchar kkd_pg[200000];
|
gchar kkd_pg[200000];
|
||||||
@ -57,15 +56,7 @@ main(int argc, char **argv)
|
|||||||
if (!(mdb = mdb_open(argv[optind], MDB_NOFLAGS))) {
|
if (!(mdb = mdb_open(argv[optind], MDB_NOFLAGS))) {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
mdb_read_catalog(mdb, MDB_ANY);
|
table = mdb_read_table_by_name(mdb, MSYSOBJECTS, MDB_ANY);
|
||||||
|
|
||||||
for (i=0;i<mdb->num_catalog;i++) {
|
|
||||||
entry = g_ptr_array_index(mdb->catalog,i);
|
|
||||||
if (!strcmp(entry->object_name,MSYSOBJECTS)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
table = mdb_read_table(entry);
|
|
||||||
mdb_read_columns(table);
|
mdb_read_columns(table);
|
||||||
mdb_rewind_table(table);
|
mdb_rewind_table(table);
|
||||||
|
|
||||||
|
@ -23,10 +23,8 @@
|
|||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int i;
|
MdbHandle *mdb;
|
||||||
MdbHandle *mdb;
|
MdbTableDef *table;
|
||||||
MdbCatalogEntry *entry;
|
|
||||||
MdbTableDef *table;
|
|
||||||
|
|
||||||
if (argc<2) {
|
if (argc<2) {
|
||||||
fprintf(stderr,"Usage: %s <file> <table>\n",argv[0]);
|
fprintf(stderr,"Usage: %s <file> <table>\n",argv[0]);
|
||||||
@ -36,17 +34,11 @@ MdbTableDef *table;
|
|||||||
mdb_init();
|
mdb_init();
|
||||||
mdb = mdb_open(argv[1], MDB_NOFLAGS);
|
mdb = mdb_open(argv[1], MDB_NOFLAGS);
|
||||||
|
|
||||||
mdb_read_catalog(mdb, MDB_TABLE);
|
table = mdb_read_table_by_name(mdb, argv[2], MDB_TABLE);
|
||||||
|
if (table) {
|
||||||
for (i=0;i<mdb->num_catalog;i++) {
|
mdb_read_columns(table);
|
||||||
entry = g_ptr_array_index(mdb->catalog,i);
|
mdb_data_dump(table);
|
||||||
if (entry->object_type == MDB_TABLE &&
|
mdb_free_tabledef(table);
|
||||||
!strcmp(entry->object_name,argv[2])) {
|
|
||||||
table = mdb_read_table(entry);
|
|
||||||
mdb_read_columns(table);
|
|
||||||
mdb_data_dump(table);
|
|
||||||
mdb_free_tabledef(table);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mdb_close(mdb);
|
mdb_close(mdb);
|
||||||
|
@ -26,13 +26,10 @@ void walk_index(MdbHandle *mdb, MdbIndex *idx);
|
|||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int i, j;
|
int j;
|
||||||
MdbHandle *mdb;
|
MdbHandle *mdb;
|
||||||
MdbCatalogEntry *entry;
|
MdbTableDef *table;
|
||||||
MdbTableDef *table;
|
MdbIndex *idx;
|
||||||
MdbIndex *idx;
|
|
||||||
int found = 0;
|
|
||||||
|
|
||||||
|
|
||||||
if (argc<4) {
|
if (argc<4) {
|
||||||
fprintf(stderr,"Usage: %s <file> <table> <index>\n",argv[0]);
|
fprintf(stderr,"Usage: %s <file> <table> <index>\n",argv[0]);
|
||||||
@ -45,31 +42,22 @@ int found = 0;
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
mdb_read_catalog(mdb, MDB_TABLE);
|
table = mdb_read_table_by_name(mdb, argv[2], MDB_TABLE);
|
||||||
|
|
||||||
for (i=0;i<mdb->num_catalog;i++) {
|
if (table) {
|
||||||
entry = g_ptr_array_index(mdb->catalog,i);
|
mdb_read_columns(table);
|
||||||
if (entry->object_type == MDB_TABLE &&
|
mdb_read_indices(table);
|
||||||
!strcmp(entry->object_name,argv[2])) {
|
for (j=0;j<table->num_idxs;j++) {
|
||||||
table = mdb_read_table(entry);
|
idx = g_ptr_array_index (table->indices, j);
|
||||||
mdb_read_columns(table);
|
if (!strcmp(idx->name, argv[3])) {
|
||||||
mdb_read_indices(table);
|
walk_index(mdb, idx);
|
||||||
for (j=0;j<table->num_idxs;j++) {
|
}
|
||||||
idx = g_ptr_array_index (table->indices, j);
|
|
||||||
if (!strcmp(idx->name, argv[3])) {
|
|
||||||
walk_index(mdb, idx);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mdb_free_tabledef(table);
|
|
||||||
|
|
||||||
//mdb_table_dump(entry);
|
|
||||||
found++;
|
|
||||||
}
|
}
|
||||||
}
|
mdb_free_tabledef(table);
|
||||||
|
} else {
|
||||||
if (!found) {
|
|
||||||
fprintf(stderr,"No table named %s found.\n", argv[2]);
|
fprintf(stderr,"No table named %s found.\n", argv[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
mdb_close(mdb);
|
mdb_close(mdb);
|
||||||
mdb_exit();
|
mdb_exit();
|
||||||
|
|
||||||
|
@ -25,12 +25,10 @@ void dump_ole(MdbTableDef *table, char *colname, char *sargname);
|
|||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int i;
|
MdbHandle *mdb;
|
||||||
MdbHandle *mdb;
|
MdbTableDef *table;
|
||||||
MdbCatalogEntry *entry;
|
char *dot, *colname, *tabname;
|
||||||
MdbTableDef *table;
|
char *sargname = NULL;
|
||||||
char *dot, *colname, *tabname;
|
|
||||||
char *sargname = NULL;
|
|
||||||
|
|
||||||
|
|
||||||
if (argc<2) {
|
if (argc<2) {
|
||||||
@ -51,17 +49,12 @@ char *sargname = NULL;
|
|||||||
*dot='\0';
|
*dot='\0';
|
||||||
colname = ++dot;
|
colname = ++dot;
|
||||||
|
|
||||||
mdb_read_catalog(mdb, MDB_TABLE);
|
table = mdb_read_table_by_name(mdb, tabname, MDB_TABLE);
|
||||||
|
|
||||||
for (i=0;i<mdb->num_catalog;i++) {
|
if (table) {
|
||||||
entry = g_ptr_array_index(mdb->catalog,i);
|
mdb_read_columns(table);
|
||||||
if (entry->object_type == MDB_TABLE &&
|
dump_ole(table, colname, sargname);
|
||||||
!strcmp(entry->object_name,tabname)) {
|
mdb_free_tabledef(table);
|
||||||
table = mdb_read_table(entry);
|
|
||||||
mdb_read_columns(table);
|
|
||||||
dump_ole(table, colname, sargname);
|
|
||||||
mdb_free_tabledef(table);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mdb_close(mdb);
|
mdb_close(mdb);
|
||||||
|
@ -28,12 +28,8 @@ void print_table(MdbTableDef *table);
|
|||||||
|
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int rows;
|
MdbHandle *mdb;
|
||||||
int i;
|
MdbTableDef *table;
|
||||||
unsigned char buf[2048];
|
|
||||||
MdbHandle *mdb;
|
|
||||||
MdbCatalogEntry *entry;
|
|
||||||
MdbTableDef *table;
|
|
||||||
|
|
||||||
mdb_init();
|
mdb_init();
|
||||||
|
|
||||||
@ -41,16 +37,11 @@ MdbTableDef *table;
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
mdb_read_catalog(mdb, MDB_TABLE);
|
table = mdb_read_table_by_name(mdb, TABLE_NAME, MDB_TABLE);
|
||||||
|
|
||||||
for (i=0;i<mdb->num_catalog;i++) {
|
if (table) {
|
||||||
entry = g_ptr_array_index(mdb->catalog,i);
|
print_table(table);
|
||||||
if (entry->object_type == MDB_TABLE &&
|
mdb_free_tabledef(table);
|
||||||
!strcmp(entry->object_name,TABLE_NAME)) {
|
|
||||||
table = mdb_read_table(entry);
|
|
||||||
print_table(table);
|
|
||||||
mdb_free_tabledef(table);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mdb_close(mdb);
|
mdb_close(mdb);
|
||||||
|
@ -26,9 +26,7 @@ void read_to_row(MdbTableDef *table, char *sargname);
|
|||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
MdbHandle *mdb;
|
MdbHandle *mdb;
|
||||||
MdbCatalogEntry *entry;
|
|
||||||
MdbTableDef *table;
|
MdbTableDef *table;
|
||||||
char *colname, *tabname;
|
char *colname, *tabname;
|
||||||
char *colval;
|
char *colval;
|
||||||
@ -49,26 +47,21 @@ int len;
|
|||||||
sargname = argv[3];
|
sargname = argv[3];
|
||||||
updstr = strdup(argv[4]);
|
updstr = strdup(argv[4]);
|
||||||
|
|
||||||
mdb_read_catalog(mdb, MDB_TABLE);
|
table = mdb_read_table_by_name(mdb, tabname, MDB_TABLE);
|
||||||
|
|
||||||
for (i=0;i<mdb->num_catalog;i++) {
|
if (table) {
|
||||||
entry = g_ptr_array_index(mdb->catalog,i);
|
mdb_read_columns(table);
|
||||||
if (entry->object_type == MDB_TABLE &&
|
mdb_read_indices(table);
|
||||||
!strcmp(entry->object_name,tabname)) {
|
printf("updstr %s\n",updstr);
|
||||||
table = mdb_read_table(entry);
|
colname = strtok(updstr,"=");
|
||||||
mdb_read_columns(table);
|
colval = strtok(NULL,"=");
|
||||||
mdb_read_indices(table);
|
bind_column(table, colname, data, &len);
|
||||||
printf("updstr %s\n",updstr);
|
read_to_row(table, sargname);
|
||||||
colname = strtok(updstr,"=");
|
printf("current value of %s is %s, changing to %s\n", colname, data, colval);
|
||||||
colval = strtok(NULL,"=");
|
len = strlen(colval);
|
||||||
bind_column(table, colname, data, &len);
|
strcpy(data,colval);
|
||||||
read_to_row(table, sargname);
|
mdb_update_row(table);
|
||||||
printf("current value of %s is %s, changing to %s\n", colname, data, colval);
|
mdb_free_tabledef(table);
|
||||||
len = strlen(colval);
|
|
||||||
strcpy(data,colval);
|
|
||||||
mdb_update_row(table);
|
|
||||||
mdb_free_tabledef(table);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mdb_close(mdb);
|
mdb_close(mdb);
|
||||||
|
Loading…
Reference in New Issue
Block a user