Common data used by both SQL import and export classes. More...

Public Member Functions | |
| ResetExImData () | |
| Common data used by both SQL import and export classes. More... | |
Public Attributes | |
| Charset | |
| Character Set to use for import or export. More... | |
| ClassName | |
| Class to use for import/export. More... | |
| ColumnNames | |
| Names (SQL field names) of columns. More... | |
| ColumnTypes | |
| Data types of columns. More... | |
| ColumnWidths | |
| Widths of columns for FixedWidth files. More... | |
| DateFormat | |
| Format for dates (passed to $ZDT). More... | |
| Delimiter | |
| Delimiter character or NULL for fixed width fields. More... | |
| FileName | |
| File (on server) to use for import or export. More... | |
| HasHeaders | |
| If true, file has column headers in first row. More... | |
| IQN | |
| Internal Qualified Table Name. More... | |
| NoCheck | |
| If true, import will insert with NOCHECK. More... | |
| StringQuote | |
| Character used to quote strings or NULL for no quoting. More... | |
| TableName | |
| Table to use for import/export. More... | |
| Terminator | |
| User defined record terminators (upto 8 charectors). More... | |
| TimeFormat | |
| Format for time (passed to $ZTime). More... | |
| TimeStampFormat | |
| Format for datetime values (ODBC or T-SQL). More... | |
Private Attributes | |
| __RoutineName | |
| Name of generated routine. More... | |
Common data used by both SQL import and export classes.
Example of using the import/export classes:
If Wizard = "Export" { set mgr = ##class(SQL.Export.Mgr).New() }
Else { Set mgr = ##class(SQL.Import.Mgr).New() }
Set mobj = ##class(SQL.Manager.API).New()
Set ok = mobj.CheckIdentifier(.SchemaName)
Set ok = mobj.CheckIdentifier(.TableName)
Set classname = mobj.FindClassName(SchemaName_"."_TableName)
Set mgr.FileName = "c:\export.txt"
Set mgr.TableName = SchemaName_"."_TableName
Set mgr.IQN=$$$BuildIQN(SchemaName,TableName) <-- $$$BuildIQN is defined in msql.INC
Set mgr.ClassName = classname
Set mgr.Delimiter = $c(9) <-- tab
Set mgr.StringQuote = "" <-- double quotes
Set mgr.DateFormat = 1 <-- MM/DD/{YY}YY
Set mgr.TimeFormat = 1 <-- hh:mm:ss
Set mgr.TimeStampFormat = 1 <-- ODBC format (Import only)
Set mgr.NoCheck = 1 <-- disable validation (Import only)
Set mgr.HasHeaders = 1 <-- import file contains column headers
Do mgr.ColumnNames.Insert(colname) <-- insert a column name
Do mgr.ColumnTypes.Insert(datatype) <-- insert a column datatype
For Export:
Set result = mgr.GenerateExportRoutine()
If result '= 1 { Write !,"Error generating export routine: ",result Quit }
Set sta = mgr.OpenExport()
If $$$ISERR(sta) {
Set ErrMsg = "Unable to open export file"
[...LogYourError here ]
} Else {
Set sta = mgr.GetExportSize(.size)
If size = 0 {
[...LogYourError here "No data to export"]
} Else {
Set tSC = $$$OK
Do {
Set tSC = mgr.ExportRows(.rows,.done)
Set total = total + rows
If $$$ISERR(tSC) [Do ..LogYourError here] Quit
} While done = 0
If $$$ISOK(tSC) {
Set tmsg = "Completed at "_$zdt($h)
} Else {
Set tmsg ="Error occurred during export."
}
Set statusmsg = "Exported: "_total_" rows"
Write !,tmsg,!,statusmsg
}
Do mgr.CloseExport()
}
Do mgr.DeleteExportRoutine()
For Import:
Set mgr.DeferIndices = 1
Set result = mgr.GenerateImportRoutine()
If result '= 1 { Write !,"Error generating import routine: ",result Quit }
Set sta = mgr.OpenImport()
If $$$ISERR(sta) {
Set ErrMsg = "Unable to open import file"
[...LogYourError here ]
} Else {
If mgr.HasHeaders = 1 { Set sta = mgr.ReadHeader(.header,.size) }
Set tSC = $$$OK
Do {
Set tSC = mgr.ImportRows(.rows,.inserted,.bytes,.done,.numerr,total)
Set total = total + rows
Set totalinserted = totalinserted + inserted
Set totalbytes = totalbytes + bytes
If $$$ISERR(tSC) [...LogYourError here ] Quit
} While done = 0
Do mgr.BuildIndices()
If mgr.ErrorCount() > 0 {
[...LogYourError here ]
[number of error count is mgr.ErrorCount()
} Else {
If $$$ISOK(tSC) {
Set tmsg = "Completed at "_$zdt($h)
} Else {
Set tmsg ="Error occurred during import."
}
Set statusmsg = "Imported: "_totalinserted_" rows"
Write !,tmsg,!,statusmsg
}
Do mgr.CloseImport(0)
}
Do mgr.DeleteImportRoutine()
| ResetExImData | ( | ) |
Common data used by both SQL import and export classes.
Example of using the import/export classes:
If Wizard = "Export" { set mgr = ##class(SQL.Export.Mgr).New() }
Else { Set mgr = ##class(SQL.Import.Mgr).New() }
Set mobj = ##class(SQL.Manager.API).New()
Set ok = mobj.CheckIdentifier(.SchemaName)
Set ok = mobj.CheckIdentifier(.TableName)
Set classname = mobj.FindClassName(SchemaName_"."_TableName)
Set mgr.FileName = "c:\export.txt"
Set mgr.TableName = SchemaName_"."_TableName
Set mgr.IQN=$$$BuildIQN(SchemaName,TableName) <-- $$$BuildIQN is defined in msql.INC
Set mgr.ClassName = classname
Set mgr.Delimiter = $c(9) <-- tab
Set mgr.StringQuote = "" <-- double quotes
Set mgr.DateFormat = 1 <-- MM/DD/{YY}YY
Set mgr.TimeFormat = 1 <-- hh:mm:ss
Set mgr.TimeStampFormat = 1 <-- ODBC format (Import only)
Set mgr.NoCheck = 1 <-- disable validation (Import only)
Set mgr.HasHeaders = 1 <-- import file contains column headers
Do mgr.ColumnNames.Insert(colname) <-- insert a column name
Do mgr.ColumnTypes.Insert(datatype) <-- insert a column datatype
For Export:
Set result = mgr.GenerateExportRoutine()
If result '= 1 { Write !,"Error generating export routine: ",result Quit }
Set sta = mgr.OpenExport()
If $$$ISERR(sta) {
Set ErrMsg = "Unable to open export file"
[...LogYourError here ]
} Else {
Set sta = mgr.GetExportSize(.size)
If size = 0 {
[...LogYourError here "No data to export"]
} Else {
Set tSC = $$$OK
Do {
Set tSC = mgr.ExportRows(.rows,.done)
Set total = total + rows
If $$$ISERR(tSC) [Do ..LogYourError here] Quit
} While done = 0
If $$$ISOK(tSC) {
Set tmsg = "Completed at "_$zdt($h)
} Else {
Set tmsg ="Error occurred during export."
}
Set statusmsg = "Exported: "_total_" rows"
Write !,tmsg,!,statusmsg
}
Do mgr.CloseExport()
}
Do mgr.DeleteExportRoutine()
For Import:
Set mgr.DeferIndices = 1
Set result = mgr.GenerateImportRoutine()
If result '= 1 { Write !,"Error generating import routine: ",result Quit }
Set sta = mgr.OpenImport()
If $$$ISERR(sta) {
Set ErrMsg = "Unable to open import file"
[...LogYourError here ]
} Else {
If mgr.HasHeaders = 1 { Set sta = mgr.ReadHeader(.header,.size) }
Set tSC = $$$OK
Do {
Set tSC = mgr.ImportRows(.rows,.inserted,.bytes,.done,.numerr,total)
Set total = total + rows
Set totalinserted = totalinserted + inserted
Set totalbytes = totalbytes + bytes
If $$$ISERR(tSC) [...LogYourError here ] Quit
} While done = 0
Do mgr.BuildIndices()
If mgr.ErrorCount() > 0 {
[...LogYourError here ]
[number of error count is mgr.ErrorCount()
} Else {
If $$$ISOK(tSC) {
Set tmsg = "Completed at "_$zdt($h)
} Else {
Set tmsg ="Error occurred during import."
}
Set statusmsg = "Imported: "_totalinserted_" rows"
Write !,tmsg,!,statusmsg
}
Do mgr.CloseImport(0)
}
Do mgr.DeleteImportRoutine()
Reset the export/import data.
| Charset |
Character Set to use for import or export.
"" is Device Default.
| ClassName |
Class to use for import/export.
| ColumnNames |
Names (SQL field names) of columns.
| ColumnTypes |
Data types of columns.
| ColumnWidths |
Widths of columns for FixedWidth files.
| DateFormat |
Format for dates (passed to $ZDT).
| Delimiter |
Delimiter character or NULL for fixed width fields.
| FileName |
File (on server) to use for import or export.
"
| HasHeaders |
If true, file has column headers in first row.
| IQN |
Internal Qualified Table Name.
$$$BuildIQN(SchemaName,TableName) or SchemaName_"."_$Translate(Tablename,".",$c(2))
| NoCheck |
If true, import will insert with NOCHECK.
|
private |
Name of generated routine.
| StringQuote |
Character used to quote strings or NULL for no quoting.
| TableName |
Table to use for import/export.
| Terminator |
User defined record terminators (upto 8 charectors).
| TimeFormat |
Format for time (passed to $ZTime).
| TimeStampFormat |
Format for datetime values (ODBC or T-SQL).