mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-08-16 14:22:28 -06:00
Exporting query results in the format COPY.
Для команды "Выполнить в файл" добавлен экспорт в формате COPY в текстовом режиме. Учитывается флаг "имена колонок" , кодировка и переводы строк.
This commit is contained in:
parent
ca13bf0f1d
commit
7bbb99dd1f
3 changed files with 113 additions and 70 deletions
|
|
@ -34,6 +34,7 @@
|
|||
#define rbQuoteAll CTRL_RADIOBUTTON("rbQuoteAll")
|
||||
#define rbQuoteNone CTRL_RADIOBUTTON("rbQuoteNone")
|
||||
#define chkColnames CTRL_CHECKBOX("chkColnames")
|
||||
#define chkCopy CTRL_CHECKBOX("chkCopy")
|
||||
#define chkXlsCopy CTRL_CHECKBOX("chkXlsCopy")
|
||||
#define cbColSeparator CTRL_COMBOBOX("cbColSeparator")
|
||||
#define cbQuoteChar CTRL_COMBOBOX("cbQuoteChar")
|
||||
|
|
@ -42,10 +43,11 @@
|
|||
BEGIN_EVENT_TABLE(frmExport, pgDialog)
|
||||
EVT_TEXT(XRCID("txtFilename"), frmExport::OnChange)
|
||||
EVT_RADIOBUTTON(XRCID("rbQuoteNone"), frmExport::OnChange)
|
||||
EVT_RADIOBUTTON(XRCID("rbQuoteStrings"), frmExport::OnChange)
|
||||
EVT_RADIOBUTTON(XRCID("rbQuoteStrings"),frmExport::OnChange)
|
||||
EVT_RADIOBUTTON(XRCID("rbQuoteAll"), frmExport::OnChange)
|
||||
EVT_CHECKBOX(XRCID("chkCopy"), frmExport::OnChange)
|
||||
EVT_CHECKBOX(XRCID("chkXlsCopy"), frmExport::OnChange)
|
||||
EVT_BUTTON(XRCID("btnFilename"), frmExport::OnBrowseFile)
|
||||
EVT_BUTTON(wxID_HELP, frmExport::OnHelp)
|
||||
EVT_BUTTON(wxID_OK, frmExport::OnOK)
|
||||
EVT_BUTTON(wxID_CANCEL, frmExport::OnCancel)
|
||||
END_EVENT_TABLE()
|
||||
|
|
@ -154,6 +156,10 @@ frmExport::frmExport(wxWindow *p)
|
|||
if (!ctrl) {
|
||||
chkXlsCopy->SetValue(false);
|
||||
chkXlsCopy->Enable(false);
|
||||
} else {
|
||||
chkCopy->SetValue(false);
|
||||
chkCopy->Enable(false);
|
||||
|
||||
}
|
||||
|
||||
wxCommandEvent ev;
|
||||
|
|
@ -176,6 +182,16 @@ void frmExport::OnHelp(wxCommandEvent &ev)
|
|||
void frmExport::OnChange(wxCommandEvent &ev)
|
||||
{
|
||||
cbQuoteChar->Enable(rbQuoteStrings->GetValue() || rbQuoteAll->GetValue());
|
||||
bool ischk = chkXlsCopy->GetValue();
|
||||
if (ev.GetEventObject()==chkXlsCopy ) {
|
||||
if (chkCopy->IsEnabled()) chkCopy->SetValue(!chkXlsCopy->GetValue());
|
||||
}
|
||||
if (ev.GetEventObject()==chkCopy ) {
|
||||
if (chkXlsCopy->IsEnabled()) chkXlsCopy->SetValue(!chkCopy->GetValue());
|
||||
}
|
||||
|
||||
|
||||
|
||||
btnOK->Enable(!txtFilename->GetValue().IsEmpty() && !cbColSeparator->GetValue().IsEmpty());
|
||||
}
|
||||
|
||||
|
|
@ -266,7 +282,7 @@ wxString textEscapeXml(wxString &text)
|
|||
for ( i = text.begin(); i != text.end(); ++i )
|
||||
{
|
||||
#if wxCHECK_VERSION(3, 0, 0)
|
||||
char c=*i;
|
||||
wxChar c=*i;
|
||||
switch (c)
|
||||
#else
|
||||
switch (*i)
|
||||
|
|
@ -442,7 +458,9 @@ bool frmExport::Export(pgSet *set)
|
|||
colCount = grid->GetNumberCols();
|
||||
rowCount = grid->NumRows();
|
||||
}
|
||||
|
||||
bool isCOPY= chkCopy->GetValue();
|
||||
wxString colsep=cbColSeparator->GetValue();
|
||||
if (colsep=="\\t" || isCOPY) colsep="\t";
|
||||
int col;
|
||||
if (chkColnames->GetValue())
|
||||
{
|
||||
|
|
@ -451,9 +469,9 @@ bool frmExport::Export(pgSet *set)
|
|||
if (!col)
|
||||
line = wxEmptyString;
|
||||
else
|
||||
line += cbColSeparator->GetValue();
|
||||
line += colsep;
|
||||
|
||||
if (rbQuoteStrings->GetValue() || rbQuoteAll->GetValue())
|
||||
if ((rbQuoteStrings->GetValue() || rbQuoteAll->GetValue())&& (!isCOPY))
|
||||
{
|
||||
wxString qc = cbQuoteChar->GetValue();
|
||||
|
||||
|
|
@ -503,7 +521,7 @@ bool frmExport::Export(pgSet *set)
|
|||
if (!col)
|
||||
line = wxEmptyString;
|
||||
else
|
||||
line += cbColSeparator->GetValue();
|
||||
line += colsep;
|
||||
|
||||
bool needQuote = rbQuoteAll->GetValue();
|
||||
|
||||
|
|
@ -531,14 +549,34 @@ bool frmExport::Export(pgSet *set)
|
|||
break;
|
||||
}
|
||||
}
|
||||
if (needQuote)
|
||||
if (needQuote && !isCOPY)
|
||||
{
|
||||
wxString qc = cbQuoteChar->GetValue();
|
||||
text.Replace(qc, qc + qc);
|
||||
line += qc + text + qc;
|
||||
}
|
||||
else
|
||||
line += text;
|
||||
else {
|
||||
if (isCOPY) {
|
||||
for (size_t i = 0; i < text.length(); ++i) {
|
||||
wxChar c = text[i];
|
||||
switch (c) {
|
||||
case '\\': line += "\\\\"; break;
|
||||
case '\n': line += "\\n"; break;
|
||||
case '\r': line += "\\r"; break;
|
||||
case '\t': line += "\\t"; break;
|
||||
default: line += c; break;
|
||||
}
|
||||
}
|
||||
if (set) {
|
||||
if (set->IsNull(col)) line+="\\N";
|
||||
}
|
||||
else {
|
||||
if (text.length()==0) line+="\\N";
|
||||
}
|
||||
} else
|
||||
line += text;
|
||||
}
|
||||
|
||||
}
|
||||
if (rbCRLF->GetValue())
|
||||
line += wxT("\r\n");
|
||||
|
|
|
|||
|
|
@ -28,10 +28,11 @@
|
|||
<item>;</item>
|
||||
<item>,</item>
|
||||
<item>|</item>
|
||||
<item>\t</item>
|
||||
</content>
|
||||
<selection>0</selection>
|
||||
<pos>100,53d</pos>
|
||||
<size>25,12d</size>
|
||||
<pos>90,53d</pos>
|
||||
<size>35,12d</size>
|
||||
<style>wxCB_DROPDOWN</style>
|
||||
</object>
|
||||
<object class="wxStaticText" name="stQuoteChar">
|
||||
|
|
@ -44,8 +45,8 @@
|
|||
<item>'</item>
|
||||
</content>
|
||||
<selection>0</selection>
|
||||
<pos>100,68d</pos>
|
||||
<size>25,12d</size>
|
||||
<pos>90,68d</pos>
|
||||
<size>35,12d</size>
|
||||
<style>wxCB_DROPDOWN</style>
|
||||
</object>
|
||||
<object class="wxStaticText" name="stColnames">
|
||||
|
|
@ -105,15 +106,16 @@
|
|||
<pos>235,105d</pos>
|
||||
<size>15,-1d</size>
|
||||
</object>
|
||||
<object class="wxButton" name="wxID_HELP">
|
||||
<label>&Help</label>
|
||||
<object class="wxCheckBox" name="chkCopy">
|
||||
<label>format COPY</label>
|
||||
<checked>0</checked>
|
||||
<size>70,12d</size>
|
||||
<pos>2,125d</pos>
|
||||
<style></style>
|
||||
</object>
|
||||
<object class="wxCheckBox" name="chkXlsCopy">
|
||||
<label>Xls fmt copy</label>
|
||||
<checked>1</checked>
|
||||
<pos>55,125d</pos>
|
||||
<pos>80,125d</pos>
|
||||
<size>70,12d</size>
|
||||
</object>
|
||||
<object class="wxButton" name="wxID_OK">
|
||||
|
|
|
|||
|
|
@ -35113,7 +35113,7 @@ static unsigned char xml_res_file_75[] = {
|
|||
106,101,99,116,62,10,32,32,60,47,111,98,106,101,99,116,62,10,60,47,114,
|
||||
101,115,111,117,114,99,101,62,10};
|
||||
|
||||
static size_t xml_res_size_76 = 3765;
|
||||
static size_t xml_res_size_76 = 3827;
|
||||
static unsigned char xml_res_file_76[] = {
|
||||
60,63,120,109,108,32,118,101,114,115,105,111,110,61,34,49,46,48,34,32,101,
|
||||
110,99,111,100,105,110,103,61,34,73,83,79,45,56,56,53,57,45,49,34,63,62,
|
||||
|
|
@ -35157,32 +35157,33 @@ static unsigned char xml_res_file_76[] = {
|
|||
60,99,111,110,116,101,110,116,62,10,32,32,32,32,32,32,32,32,60,105,116,
|
||||
101,109,62,59,60,47,105,116,101,109,62,10,32,32,32,32,32,32,32,32,60,105,
|
||||
116,101,109,62,44,60,47,105,116,101,109,62,10,32,32,32,32,32,32,32,32,60,
|
||||
105,116,101,109,62,124,60,47,105,116,101,109,62,10,32,32,32,32,32,32,60,
|
||||
47,99,111,110,116,101,110,116,62,10,32,32,32,32,32,32,60,115,101,108,101,
|
||||
99,116,105,111,110,62,48,60,47,115,101,108,101,99,116,105,111,110,62,10,
|
||||
32,32,32,32,32,32,60,112,111,115,62,49,48,48,44,53,51,100,60,47,112,111,
|
||||
115,62,10,32,32,32,32,32,32,60,115,105,122,101,62,50,53,44,49,50,100,60,
|
||||
47,115,105,122,101,62,10,32,32,32,32,32,32,60,115,116,121,108,101,62,119,
|
||||
120,67,66,95,68,82,79,80,68,79,87,78,60,47,115,116,121,108,101,62,10,32,
|
||||
32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,60,111,98,106,101,
|
||||
99,116,32,99,108,97,115,115,61,34,119,120,83,116,97,116,105,99,84,101,120,
|
||||
116,34,32,110,97,109,101,61,34,115,116,81,117,111,116,101,67,104,97,114,
|
||||
34,62,10,32,32,32,32,32,32,60,108,97,98,101,108,62,81,117,111,116,101,32,
|
||||
99,104,97,114,60,47,108,97,98,101,108,62,10,32,32,32,32,32,32,60,112,111,
|
||||
115,62,53,44,55,48,100,60,47,112,111,115,62,10,32,32,32,32,60,47,111,98,
|
||||
106,101,99,116,62,10,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,
|
||||
115,115,61,34,119,120,67,111,109,98,111,66,111,120,34,32,110,97,109,101,
|
||||
61,34,99,98,81,117,111,116,101,67,104,97,114,34,62,10,32,32,32,32,32,32,
|
||||
60,99,111,110,116,101,110,116,62,10,32,32,32,32,32,32,32,32,60,105,116,
|
||||
105,116,101,109,62,124,60,47,105,116,101,109,62,10,32,32,32,32,32,32,32,
|
||||
32,60,105,116,101,109,62,92,116,60,47,105,116,101,109,62,10,32,32,32,32,
|
||||
32,32,60,47,99,111,110,116,101,110,116,62,10,32,32,32,32,32,32,60,115,101,
|
||||
108,101,99,116,105,111,110,62,48,60,47,115,101,108,101,99,116,105,111,110,
|
||||
62,10,32,32,32,32,32,32,60,112,111,115,62,57,48,44,53,51,100,60,47,112,
|
||||
111,115,62,10,32,32,32,32,32,32,60,115,105,122,101,62,51,53,44,49,50,100,
|
||||
60,47,115,105,122,101,62,10,32,32,32,32,32,32,60,115,116,121,108,101,62,
|
||||
119,120,67,66,95,68,82,79,80,68,79,87,78,60,47,115,116,121,108,101,62,10,
|
||||
32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,60,111,98,106,
|
||||
101,99,116,32,99,108,97,115,115,61,34,119,120,83,116,97,116,105,99,84,101,
|
||||
120,116,34,32,110,97,109,101,61,34,115,116,81,117,111,116,101,67,104,97,
|
||||
114,34,62,10,32,32,32,32,32,32,60,108,97,98,101,108,62,81,117,111,116,101,
|
||||
32,99,104,97,114,60,47,108,97,98,101,108,62,10,32,32,32,32,32,32,60,112,
|
||||
111,115,62,53,44,55,48,100,60,47,112,111,115,62,10,32,32,32,32,60,47,111,
|
||||
98,106,101,99,116,62,10,32,32,32,32,60,111,98,106,101,99,116,32,99,108,
|
||||
97,115,115,61,34,119,120,67,111,109,98,111,66,111,120,34,32,110,97,109,
|
||||
101,61,34,99,98,81,117,111,116,101,67,104,97,114,34,62,10,32,32,32,32,32,
|
||||
32,60,99,111,110,116,101,110,116,62,10,32,32,32,32,32,32,32,32,60,105,116,
|
||||
101,109,62,34,60,47,105,116,101,109,62,10,32,32,32,32,32,32,32,32,60,105,
|
||||
116,101,109,62,39,60,47,105,116,101,109,62,10,32,32,32,32,32,32,60,47,99,
|
||||
111,110,116,101,110,116,62,10,32,32,32,32,32,32,60,115,101,108,101,99,116,
|
||||
105,111,110,62,48,60,47,115,101,108,101,99,116,105,111,110,62,10,32,32,
|
||||
32,32,32,32,60,112,111,115,62,49,48,48,44,54,56,100,60,47,112,111,115,62,
|
||||
10,32,32,32,32,32,32,60,115,105,122,101,62,50,53,44,49,50,100,60,47,115,
|
||||
105,122,101,62,10,32,32,32,32,32,32,60,115,116,121,108,101,62,119,120,67,
|
||||
66,95,68,82,79,80,68,79,87,78,60,47,115,116,121,108,101,62,10,32,32,32,
|
||||
32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,60,111,98,106,101,99,116,
|
||||
32,32,32,32,60,112,111,115,62,57,48,44,54,56,100,60,47,112,111,115,62,10,
|
||||
32,32,32,32,32,32,60,115,105,122,101,62,51,53,44,49,50,100,60,47,115,105,
|
||||
122,101,62,10,32,32,32,32,32,32,60,115,116,121,108,101,62,119,120,67,66,
|
||||
95,68,82,79,80,68,79,87,78,60,47,115,116,121,108,101,62,10,32,32,32,32,
|
||||
60,47,111,98,106,101,99,116,62,10,32,32,32,32,60,111,98,106,101,99,116,
|
||||
32,99,108,97,115,115,61,34,119,120,83,116,97,116,105,99,84,101,120,116,
|
||||
34,32,110,97,109,101,61,34,115,116,67,111,108,110,97,109,101,115,34,62,
|
||||
10,32,32,32,32,32,32,60,108,97,98,101,108,62,67,111,108,117,109,110,32,
|
||||
|
|
@ -35263,35 +35264,37 @@ static unsigned char xml_res_file_76[] = {
|
|||
115,62,10,32,32,32,32,32,32,60,115,105,122,101,62,49,53,44,45,49,100,60,
|
||||
47,115,105,122,101,62,10,32,32,32,32,60,47,111,98,106,101,99,116,62,10,
|
||||
32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,
|
||||
66,117,116,116,111,110,34,32,110,97,109,101,61,34,119,120,73,68,95,72,69,
|
||||
76,80,34,62,10,32,32,32,32,32,32,60,108,97,98,101,108,62,38,97,109,112,
|
||||
59,72,101,108,112,60,47,108,97,98,101,108,62,10,32,32,32,32,32,32,60,112,
|
||||
111,115,62,50,44,49,50,53,100,60,47,112,111,115,62,10,32,32,32,32,32,32,
|
||||
60,115,116,121,108,101,47,62,10,32,32,32,32,60,47,111,98,106,101,99,116,
|
||||
62,10,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,
|
||||
120,67,104,101,99,107,66,111,120,34,32,110,97,109,101,61,34,99,104,107,
|
||||
88,108,115,67,111,112,121,34,62,10,32,32,32,32,32,32,60,108,97,98,101,108,
|
||||
62,88,108,115,32,102,109,116,32,99,111,112,121,60,47,108,97,98,101,108,
|
||||
62,10,32,32,32,32,32,32,60,99,104,101,99,107,101,100,62,49,60,47,99,104,
|
||||
101,99,107,101,100,62,10,32,32,32,32,32,32,60,112,111,115,62,53,53,44,49,
|
||||
50,53,100,60,47,112,111,115,62,10,32,32,32,32,32,32,60,115,105,122,101,
|
||||
62,55,48,44,49,50,100,60,47,115,105,122,101,62,10,32,32,32,32,60,47,111,
|
||||
98,106,101,99,116,62,10,32,32,32,32,60,111,98,106,101,99,116,32,99,108,
|
||||
97,115,115,61,34,119,120,66,117,116,116,111,110,34,32,110,97,109,101,61,
|
||||
34,119,120,73,68,95,79,75,34,62,10,32,32,32,32,32,32,60,108,97,98,101,108,
|
||||
62,38,97,109,112,59,79,75,60,47,108,97,98,101,108,62,10,32,32,32,32,32,
|
||||
32,60,100,101,102,97,117,108,116,62,49,60,47,100,101,102,97,117,108,116,
|
||||
62,10,32,32,32,32,32,32,60,112,111,115,62,49,52,55,44,49,50,53,100,60,47,
|
||||
112,111,115,62,10,32,32,32,32,32,32,60,115,116,121,108,101,47,62,10,32,
|
||||
32,32,32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,60,111,98,106,101,
|
||||
99,116,32,99,108,97,115,115,61,34,119,120,66,117,116,116,111,110,34,32,
|
||||
110,97,109,101,61,34,119,120,73,68,95,67,65,78,67,69,76,34,62,10,32,32,
|
||||
32,32,32,32,60,108,97,98,101,108,62,38,97,109,112,59,67,97,110,99,101,108,
|
||||
60,47,108,97,98,101,108,62,10,32,32,32,32,32,32,60,100,101,102,97,117,108,
|
||||
116,62,48,60,47,100,101,102,97,117,108,116,62,10,32,32,32,32,32,32,60,112,
|
||||
111,115,62,50,48,48,44,49,50,53,100,60,47,112,111,115,62,10,32,32,32,32,
|
||||
60,47,111,98,106,101,99,116,62,10,32,32,60,47,111,98,106,101,99,116,62,
|
||||
10,60,47,114,101,115,111,117,114,99,101,62,10};
|
||||
67,104,101,99,107,66,111,120,34,32,110,97,109,101,61,34,99,104,107,67,111,
|
||||
112,121,34,62,10,32,32,32,32,32,32,60,108,97,98,101,108,62,102,111,114,
|
||||
109,97,116,32,67,79,80,89,60,47,108,97,98,101,108,62,10,32,32,32,32,32,
|
||||
32,60,99,104,101,99,107,101,100,62,48,60,47,99,104,101,99,107,101,100,62,
|
||||
10,32,32,32,32,32,32,60,115,105,122,101,62,55,48,44,49,50,100,60,47,115,
|
||||
105,122,101,62,10,32,32,32,32,32,32,60,112,111,115,62,50,44,49,50,53,100,
|
||||
60,47,112,111,115,62,10,32,32,32,32,60,47,111,98,106,101,99,116,62,10,32,
|
||||
32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,115,61,34,119,120,67,
|
||||
104,101,99,107,66,111,120,34,32,110,97,109,101,61,34,99,104,107,88,108,
|
||||
115,67,111,112,121,34,62,10,32,32,32,32,32,32,60,108,97,98,101,108,62,88,
|
||||
108,115,32,102,109,116,32,99,111,112,121,60,47,108,97,98,101,108,62,10,
|
||||
32,32,32,32,32,32,60,99,104,101,99,107,101,100,62,49,60,47,99,104,101,99,
|
||||
107,101,100,62,10,32,32,32,32,32,32,60,112,111,115,62,56,48,44,49,50,53,
|
||||
100,60,47,112,111,115,62,10,32,32,32,32,32,32,60,115,105,122,101,62,55,
|
||||
48,44,49,50,100,60,47,115,105,122,101,62,10,32,32,32,32,60,47,111,98,106,
|
||||
101,99,116,62,10,32,32,32,32,60,111,98,106,101,99,116,32,99,108,97,115,
|
||||
115,61,34,119,120,66,117,116,116,111,110,34,32,110,97,109,101,61,34,119,
|
||||
120,73,68,95,79,75,34,62,10,32,32,32,32,32,32,60,108,97,98,101,108,62,38,
|
||||
97,109,112,59,79,75,60,47,108,97,98,101,108,62,10,32,32,32,32,32,32,60,
|
||||
100,101,102,97,117,108,116,62,49,60,47,100,101,102,97,117,108,116,62,10,
|
||||
32,32,32,32,32,32,60,112,111,115,62,49,52,55,44,49,50,53,100,60,47,112,
|
||||
111,115,62,10,32,32,32,32,32,32,60,115,116,121,108,101,47,62,10,32,32,32,
|
||||
32,60,47,111,98,106,101,99,116,62,10,32,32,32,32,60,111,98,106,101,99,116,
|
||||
32,99,108,97,115,115,61,34,119,120,66,117,116,116,111,110,34,32,110,97,
|
||||
109,101,61,34,119,120,73,68,95,67,65,78,67,69,76,34,62,10,32,32,32,32,32,
|
||||
32,60,108,97,98,101,108,62,38,97,109,112,59,67,97,110,99,101,108,60,47,
|
||||
108,97,98,101,108,62,10,32,32,32,32,32,32,60,100,101,102,97,117,108,116,
|
||||
62,48,60,47,100,101,102,97,117,108,116,62,10,32,32,32,32,32,32,60,112,111,
|
||||
115,62,50,48,48,44,49,50,53,100,60,47,112,111,115,62,10,32,32,32,32,60,
|
||||
47,111,98,106,101,99,116,62,10,32,32,60,47,111,98,106,101,99,116,62,10,
|
||||
60,47,114,101,115,111,117,114,99,101,62,10};
|
||||
|
||||
static size_t xml_res_size_77 = 1443;
|
||||
static unsigned char xml_res_file_77[] = {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue