I have created a shell script that reads line from text file and insert into DB table. I have used IFS to separate the line text. Looks IFS is splitting text properly but while passing one of the values that has special characters in it to query, it is giving weird issue. Below is my script looks like
Code:
IFS.OLD=$IFS
IFS='#'
while read line
do
read -r -A a <<< "$line"
echo "flag is- ${a[0]}"
if [ "${a[0]}" = "Flag" ];
then
echo "Header"
elif [ "${a[0]}" = "NU" ];
then
echo "User - Insert"
echo "company is- ${a[4]}"
sqlplus -s $DB_PATH <<EOF
set head off feedback off
INSERT INTO USERS (EMAIL, FULL_NAME, CONTACT_PHONE_NUMBER,COMPANY, USER_ID) VALUES ( '${a[1]}', '${a[2]}','${a[3]}','${a[4]}',999527 );
commit;
exit;
EOF
fi
Below is my text file data
Code:
Flag#NEW#EMAIL#Name#Phno#Comp#***
NU#john@gmail.com#John Mathew#1122333#A&N Services, Inc.
when I run the script, output is coming as below
Code:
flag is- Flag
Header
flag is- NU
User - Insert
company is- A&N Services, Inc.
Enter value for n: old 1: INSERT INTO USERS (EMAIL, FULL_NAME, CONTACT_PHONE_NUMBER,COMPANY, USER_ID) VALUES ( 'john@gmail.com', 'John Mathew','1122333','A&N Services, Inc.',999527 )
new 1: INSERT INTO USERS (EMAIL, FULL_NAME, CONTACT_PHONE_NUMBER,COMPANY, USER_ID) VALUES ( 'john@gmail.com', 'John Mathew','1122333','Acommit; Services, Inc.',999527 )
I really do not understand why it is showing output like this but I investigated and found that this issue is coming due to the parameter COMPANY in the query. It has special characters. If I remove and change to simple text then it is not giving this issue and record is inserting successfully. Please suggest if any solution.
Last edited by vgersh99; 10-30-2018 at 05:29 PM..
Reason: Code tags, please!
Hi,
When i execute the below statement , the value is not getting stored in the variable.
AnneeExercice=`sqlplus $LOGSQL/$PASSWORDSQL << FIN >> $GEMOLOG/gemo_reprev_reel_data_ventil_$filiale.trc
SELECT bi09exercice
FROM bi09_scenario
WHERE bi09idfiliale=UPPER('de')
AND ... (1 Reply)
Unix prompt
=========
echo "Enter the query"
read q
==========
User has entered :
SELECT * FROM employee
=====================
Now the problem starts..
echo $q
Output: SELECT "all files names in the PWD" FROM employee
================================================
... (5 Replies)
Hi,
I am passing an argument for the script and that argument values should exist in database.
bill_period_input="'""$1""'"
bill_period=`sqlplus uname/pwd@dbname <<eof!
set verify off
set heading off
set feedback off
select bill_period from bill_period_ref where... (4 Replies)
Hi ,
I used the below script to get the sql data into csv file using unix scripting.
I m getting the output into an output file but the output file is not displayed in a separe columns .
#!/bin/ksh
export FILE_PATH=/maav/home/xyz/abc/
rm $FILE_PATH/sample.csv
sqlplus -s... (2 Replies)
Hi Everyone,
Can anyone help me how do i call hash variable in to sql query in perl. Please see the script below
i have defined two Hash %lc and %tab as below
$lc{'REFF'}='V_RES_CLASS';
$lc{'CALE'}='V_CAP_CLASS';
$lc{'XRPD'}='V_XFMR_CLASS';
$tab{'V_RES_CLASS'}='V_MFR_SERS';... (6 Replies)
I used the following code
code
select * from tablename where columnname
Instead of printing the expected output it prints all the files in the present directory since there is a "*" in the code. Is there any way to overcome the problem?
Thanks
Ananth (2 Replies)
Hi Guys..
Need your help to format the output of my shell script.
I am using spool command to take out put in csv file.
below is my code. (for example)
col USERNAME for a15
col EMAIL for a30
col FULL_NAME for a20
col LAST_LOGIN for a40
col DATE_CREATED for a40
SPOOL 120.csv... (3 Replies)
Hi, this's Pom. I'm quite a new one for shell script but I have to do sql on shell script to query some information from database.
I found a concern to get a new line...When I run my script, it retrieves all data as wondering but it's shown in one line :(
What should I do? I'm not sure that... (2 Replies)
I have a postgres sql statement that is the following:
select age from students;
which gives me the entries:
Age
---
10
15
13
12
9
14
10
which is about 7 rows of data.
Now what I would like to do with this is use a shell script to create an array age. As a results... (3 Replies)
Discussion started by: JSNY
3 Replies
LEARN ABOUT CENTOS
dblink_exec
DBLINK_EXEC(3) PostgreSQL 9.2.7 Documentation DBLINK_EXEC(3)NAME
dblink_exec - executes a command in a remote database
SYNOPSIS
dblink_exec(text connname, text sql [, bool fail_on_error]) returns text
dblink_exec(text connstr, text sql [, bool fail_on_error]) returns text
dblink_exec(text sql [, bool fail_on_error]) returns text
DESCRIPTION
dblink_exec executes a command (that is, any SQL statement that doesn't return rows) in a remote database.
When two text arguments are given, the first one is first looked up as a persistent connection's name; if found, the command is executed on
that connection. If not found, the first argument is treated as a connection info string as for dblink_connect, and the indicated
connection is made just for the duration of this command.
ARGUMENTS
conname
Name of the connection to use; omit this parameter to use the unnamed connection.
connstr
A connection info string, as previously described for dblink_connect.
sql
The SQL command that you wish to execute in the remote database, for example insert into foo values(0,'a','{"a0","b0","c0"}').
fail_on_error
If true (the default when omitted) then an error thrown on the remote side of the connection causes an error to also be thrown locally.
If false, the remote error is locally reported as a NOTICE, and the function's return value is set to ERROR.
RETURN VALUE
Returns status, either the command's status string or ERROR.
EXAMPLES
SELECT dblink_connect('dbname=dblink_test_standby');
dblink_connect
----------------
OK
(1 row)
SELECT dblink_exec('insert into foo values(21,''z'',''{"a0","b0","c0"}'');');
dblink_exec
-----------------
INSERT 943366 1
(1 row)
SELECT dblink_connect('myconn', 'dbname=regression');
dblink_connect
----------------
OK
(1 row)
SELECT dblink_exec('myconn', 'insert into foo values(21,''z'',''{"a0","b0","c0"}'');');
dblink_exec
------------------
INSERT 6432584 1
(1 row)
SELECT dblink_exec('myconn', 'insert into pg_class values (''foo'')',false);
NOTICE: sql error
DETAIL: ERROR: null value in column "relnamespace" violates not-null constraint
dblink_exec
-------------
ERROR
(1 row)
PostgreSQL 9.2.7 2014-02-17 DBLINK_EXEC(3)