Хорошо, тебе это понравится. Это случилось со мной и сегодня. Точно такая же вещь. Я почти уверен, что лазурная команда где-то щелкнула выключателем, и мы провалились.
Я нашел этот неясный ответ без голосов, и он добился цели (с небольшим дополнительным обманом)
БОНУС ! это также устраняло проблемы с маршрутизатором, которые у меня были только на развернутом сайте (не локальном):
Credit: @stormwild: Документы по умолчанию, не обслуживаемые в веб-приложении узла, размещенном в Azure
Из сообщения @ stormwild см. Здесь: https://blogs.msdn.microsoft.com/waws/2017/09/08/things-you-should-know-web-apps-and-linux/# NodeHome
Шаги:
и создайте там index.js со следующим кодом:
var express = require ('express');
var server = express ();
var options = {
index: 'index.html'
};
server.use ('/', express.static ('/ home / site / wwwroot', options));
ПРИМЕЧАНИЕ. Обязательно запустите npm install - сохраните также и в этой папке, иначе ваш сервис приложений будет аварийно завершать работу при запуске
Одна вещь, которую можно попробовать, состоит в том, чтобы динамично генерировать "команды" формата a20 столбца x. Что-то как следующее:
set termout off
set feedback off
spool t1.sql
select 'column ' || column_name || ' format a' || data_length
from all_tab_cols
where table_name='YOUR_TABLE'
/
spool off
@t1.sql
set pagesize 24
set heading on
spool result.txt
select *
from YOUR_TABLE;
and rownum < 30;
spool off
Обратите внимание, что этот образец будет только работать с VARCHAR2. Необходимо было бы добавить, декодируют, например, для изменения сгенерированной команды "столбца" для ДАТ или ЧИСЕЛ.
ОБНОВЛЕНИЕ: оказывается, что исходный SQL действительно не изменяет поведение SQL*Plus. Единственная вещь, о которой я мог думать, состоит в том, чтобы переименовать имена полей к одному A значений символа, B, C, и т.д. следующим образом:
select 'column ' || column_name ||
' heading "' ||
chr(ascii('A') - 1 + column_id) ||
'"'
from all_tab_cols
where table_name='YOUR_TAB_NAME'
Это генерирует вывод, подобный:
column DEPT_NO heading "A"
column NAME heading "B"
column SUPERVIS_ID heading "C"
column ADD_DATE heading "D"
column REPORT_TYPE heading "E"
Я не думаю, что sqlplus предлагает функциональность, которую Вы запрашиваете. Вы смогли автоматизировать форматирование, с помощью своего рода языка сценариев, такого как Perl или Python. Другими словами, запросите ALL_TAB_COLS
представление для схемы и таблицы, и затем создает сценарий динамично с атрибутом столбца формата. Это будет только работать, конечно, если у Вас будет разрешение запросить представление ALL_TAB_COLS (или некоторый другой эквивалент).
Это - быстрое подтверждение концепции, которое я бросил вместе:
#!/usr/bin/python
import sys
import cx_Oracle
response=raw_input("Enter schema.table_name: ")
(schema, table) = response.split('.')
schema = schema.upper()
table = table.upper()
sqlstr = """select column_name,
data_type,
data_length
from all_tab_cols
where owner = '%s'
and table_name = '%s'""" % ( schema, table )
## open a connection to databases...
try:
oracle = cx_Oracle.Connection( oracleLogin )
oracle_cursor = oracle.cursor()
except cx_Oracle.DatabaseError, exc:
print "Cannot connect to Oracle database as", oracleLogin
print "Oracle Error %d: %s" % ( exc.args[0].code, exc.args[0].message )
sys.exit(1)
try:
oracle_cursor.execute( sqlstr )
# fetch resultset from cursor
for column_name, data_type, data_length in oracle_cursor.fetchmany(256):
data_length = data_length + 0
if data_length < len(column_name):
if data_type == "CHAR" or data_type == "VARCHAR2":
print "column %s format a%d" % ( column_name.upper(), len(column_name) )
else:
print "-- Handle %s, %s, %d" % (column_name, data_type, data_length)
except cx_Oracle.DatabaseError, e:
print "[Oracle Error %d: %s]: %s" % (e.args[0].code, e.args[0].message, sqlstr)
sys.exit(1)
try:
oracle_cursor.close()
oracle.close()
except cx_Oracle.DatabaseError, exc:
print "Warning: Oracle Error %d: %s" % ( exc.args[0].code, exc.args[0].message )
print "select *"
print "from %s.%s" % ( schema, table )