Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
MSDE, QUERY SCHEDULATA , OUTPUT IN ASCII
venerdì 21 marzo 2008 - 16.31
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
stevepastorius
Profilo
| Newbie
6
messaggi | Data Invio:
ven 21 mar 2008 - 16:31
Chiedo un prezioso aiuto. Ho un db msde. Devo estrarre da una tabella alcuni record, in base a tipo e data.
Vorrei chiedere: 1- come posso crearmi una query e schedularla in modo che a ora stabilita, estragga i dati e li porti su un file
di testo ? Ho solo la consolle DbaMgr2k....e Osql, immagino...
Vhi mi aiuta? grazie 1000
ciao
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
ven 21 mar 2008 - 16:37
>Chiedo un prezioso aiuto. Ho un db msde. Devo estrarre da una
>tabella alcuni record, in base a tipo e data.
>Vorrei chiedere:
>1- come posso crearmi una query e schedularla
>in modo che a ora stabilita, estragga i dati e li porti su un
>file di testo ?
Ciao STEVE,
MSDE dispone del SQL Server Agent che ti permette di schedulare l'esecuzione di un comando.
Per esportare i dati su file di testo puoi ricorrere all'utility command line BCP.exe, specificando la query tramite il parametro queryout.
Sui Books Online troverai tutti i dettagli:
"bcp Utility"
http://msdn2.microsoft.com/en-us/library/ms162802.aspx
>Vhi mi aiuta? grazie 1000
Prego.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
stevepastorius
Profilo
| Newbie
6
messaggi | Data Invio:
ven 21 mar 2008 - 18:03
ok grazie...ho fatto un giro sui vari siti MSD, ho quasi capito...
Però..se io volessi esportare su un file a posizione e lunghezza fissi,
come faccio?
non riesco a capire il funzionamento del file di format.
Iodevo prelevare da una tabella, e posizionare su un file, es,
GGMMAAAA|HHMM|numerotessera|causale|
come gli dico ...esporta campo 1, da pos 3, lungh 10....cose di questo tipo?
StevePastorius ;-))
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mar 25 mar 2008 - 10:16
>ok grazie...ho fatto un giro sui vari siti MSD, ho quasi capito...
>Però..se io volessi esportare su un file a posizione e lunghezza
>fissi,
>come faccio?
Devi ricorrere ai file di formato.
In questo post troverai un esempio:
http://groups.google.it/group/microsoft.public.it.sql/msg/568fe016eea9f13e
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
stevepastorius
Profilo
| Newbie
6
messaggi | Data Invio:
mar 25 mar 2008 - 23:42
ho provato cosi:
FILE BAT
=========
osql -S NAMEPC\ISTANCENAME -U sa -P sa -i C:\script22.sql
SCRIPT22
========
USE nomeDB
go
bcp "SELECT RIGHT(REPLICATE('0', 10),10) badge, causale, tipotran FROM TABELLA" queryout c:\punches.txt -fc:\formato.fmt
go
quit
formato
=======
<BOF>
8.0
3
1 SQLCHAR 0 10 "" 4 badge SQL_Latin1_General_CI_AS
2 SQLCHAR 0 5 "" 6 causale SQL_Latin1_General_CI_AS
3 SQLCHAR 0 1 "\r\n" 7 tipotran SQL_Latin1_General_CI_AS
<EOF>
MA NON MI TIRA FUORI NULLA!!!
from tabella? devo x caso from nomedb.dbo.tabella?
StevePastorius ;-))
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 26 mar 2008 - 10:07
>ho provato cosi:
>FILE BAT
>=========
>osql -S NAMEPC\ISTANCENAME -U sa -P sa -i C:\script22.sql
Dato che dovresti utiliuzzare il SQL Server Agent per schedulare l'esportazione, questa chiamata a osql.exe è del tutto inutile.
>SCRIPT22
>========
>USE nomeDB
>go
>bcp "SELECT RIGHT(REPLICATE('0', 10),10) badge, causale, tipotran
>FROM TABELLA" queryout c:\punches.txt -fc:\formato.fmt
>go
>quit
Togli tutto ad eccezione della chiamata bcp. Specifica il db e l'owner prima della tabella (database.owner.tabella).
>formato
>=======
><BOF>
>8.0
>3
>1 SQLCHAR 0 10 ""
>4 badge SQL_Latin1_General_CI_AS
>2 SQLCHAR 0 5 ""
>6 causale SQL_Latin1_General_CI_AS
>3 SQLCHAR 0 1 "\r\n"
>7 tipotran SQL_Latin1_General_CI_AS
><EOF>
Non avendo la struttura della tabella non so dirti se quel file di formato è corretto o meno.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
stevepastorius
Profilo
| Newbie
6
messaggi | Data Invio:
mer 26 mar 2008 - 12:28
TI FACCIO TUTTA LA STORIA. se riesci ad aiutarmi ti ringrazio moltissimo. Non mi occupo quasi mai di lato DB sql, quindi ho parecchie......lacune....
questa è la tabella da cui parto....
[dbo].[TRANSAZIONI]
[idtrans] [int] IDENTITY (1, 1) NOT NULL ,
[term] [varchar] (255) COLLATE Latin1_General_CI_AS NULL ,
[verso] [varchar] (255) COLLATE Latin1_General_CI_AS NULL ,
[badge] [varchar] (255) COLLATE Latin1_General_CI_AS NULL ,
[dataora] [datetime] NULL ,
[causale] [varchar] (255) COLLATE Latin1_General_CI_AS NULL ,
[tipotran] [varchar] (255) COLLATE Latin1_General_CI_AS NULL ,
[modif] [varchar] (50) COLLATE Latin1_General_CI_AS NULL
questo deve essere il file di arrivo
ascii..
LUNGHEZZA DEL RECORD 28
CAMPI:
DA POSIZIONE 1 A POSIZIONE 3 = VUOTO
DA POSIZIONE 4 A POSIZIONE 13 = LUNGH.10 > NUMERO BADGE (NUMERICO)
DA POSIZIONE 14 A POSIZIONE 14 = LUNGH.1 > TIPOTIMBRATURE ( 1=ENTRA; 0=ESCE)
DA POSIZIONE 15 A POSIZIONE 18 = LUNGH.4 > CAUSALE (NUMERICA)
DA POSIZIONE 19 A POSIZIONE 24 = LUNGH.6 > DATA (GGMMAA)
DA POSIZIONE 25 A POSIZIONE 28 = LUNGH.4 > ORE E MINUTI (HHMM)
condizioni: devo estrarre solo i record con data odierna di sistema
e solo quelli di un [term] es. 001.
COME DEVO IMPOSTARE IL TUTTO? FAI CONTO CHE PARTIAMO DA ZERO.....GRAZIEEE
StevePastorius ;-))
lbenaglia
Profilo
| Guru
5.625
messaggi | Data Invio:
mer 26 mar 2008 - 13:22
>COME DEVO IMPOSTARE IL TUTTO? FAI CONTO CHE PARTIAMO DA ZERO.....GRAZIEEE
Beh, mi stai chiedendo di preparti la soluzione da 0...
Anche volendo mi mancano diverse informazioni.
Per quale motivo il 99% delle colonne è di tipo varchar quando memorizzano informazioni numeriche?
La colonna "verso" che informazioni contiene?
Ti chiedo di semplificarci il lavoro postando la struttura riveduta e corretta della tabella (CREATE TABLE), alcune righe di prova (INSERT INTO), ed un file ASCII zippato in attach con il risultato che vuoi ottenere partendo da quei dati.
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
stevepastorius
Profilo
| Newbie
6
messaggi | Data Invio:
mer 26 mar 2008 - 16:52
604_ascii.zip
Che dire....sei forte! grazie per tuo interessamento!!
La struttura tabella haimè è quella che è e me la devo tenere cosi'.
i dati , eccoli:
/* SELECT * FROM [dbo].[TRANSAZIONI] /*
/* /*
4;001;0;0000000001;22/03/2008 18.51.49;M0000;E;
5;001;1;0000000001;23/03/2008 21.55.06;M0000;U;
6;001;0;0000000001;23/03/2008 22.17.17;M0000;E;
7;001;0;0000000001;23/03/2008 22.19.37;M0000;E;
8;001;0;0000000002;24/03/2008 23.29.00;M0000;E;
9;001;1;0000000002;24/03/2008 23.29.59;M0000;U;
10;002;0;0000000001;26/03/2008 16.35.56;M0000;E;
IL VERSO DICE 0 SE ENTRO, 1 SE ESCO.
(andrebbe girato...)
Allego file ASCII zippato...
L'estrazione è fatta per giorno
ancora thanks...
StevePastorius ;-))
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !