Monday, 29 October 2007

MySql Slow Import

Try these settings to improve performance when running a Sql file created from MysqlDump

(
echo "SET AUTOCOMMIT=0;"
echo "SET UNIQUE_CHECKS=0;"
echo "SET FOREIGN_KEY_CHECKS=0;"
cat mydumpfile.sql
echo "SET FOREIGN_KEY_CHECKS=1;"
echo "UNIQUE_CHECKS=1;"
echo "COMMIT;"
) | mysql -u username -p mydatabase

Friday, 26 October 2007

All locations nearby

-- all the points neraby
DECLARE @lat float, @lon float, @earthradius float
,@Xaxis float, @Yaxis float, @Zaxis float

-- this is the start point
SET @lat = 52.280709
SET @lon = -1.623253

-- calculate
SET @earthradius = 3963.1676 -- miles
set @Xaxis = cos(radians(@lat)) * cos(radians(@lon))
set @Yaxis = cos(radians(@lat)) * sin(radians(@lon))
set @Zaxis = sin(radians(@lat))


SELECT TOP 200
Postcode
,@earthradius *
acos( (cos(radians(Latitude)) * cos(radians(Longitude)))*@Xaxis
+ (cos(radians(Latitude)) * sin(radians(Longitude)))*@Yaxis
+ (sin(radians(Latitude)))*@Zaxis) distance
FROM
paf.dbo.ukpostcodepointsY07Q3
WHERE
@earthradius *
acos( (cos(radians(Latitude)) * cos(radians(Longitude)))*@Xaxis
+ (cos(radians(Latitude)) * sin(radians(Longitude)))*@Yaxis
+ (sin(radians(Latitude)))*@Zaxis)
< 2 -- miles
ORDER BY
distance asc

Tuesday, 23 October 2007

Resetting Mysql root password on Windows

To reset password for root, detail steps are as below:

The procedure under Windows:

Log on to the Windows system where MySQL is running as Administrator.
Stop the MySQL server if it is running. For a server that is running as a Windows service, go to the Services manager:Start Menu -> Control Panel -> Administrative Tools -> ServicesThen find the MySQL service in the list, and stop it.If your server is not running as a service, you may need to use the Task Manager to force it to stop.
Create a text file and place the following command within it on a single line:SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(’MyNewPassword’);Save the file with any name. For this example the file will be C:\mysql-init.txt.
Open a console window to get to the DOS command prompt:Start Menu -> Run -> cmd
If MySQL is installed in C:\mysql. If MySQL is installed in another location, adjust the following commands accordingly.At the DOS command prompt, execute this command:C:\> C:\mysql\bin\mysqld-nt––init-file=C:\mysql-init.txtThe contents of the file named by the –init-file option are executed at server startup, changing the root password. After the server has started successfully, you should delete C:\mysql-init.txt.If you installed MySQL using the MySQL Installation Wizard, you may need to specify a –defaults-file option:C:\> “C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe”
–defaults-file=”C:\Program Files\MySQL\MySQL Server 5.0\my.ini”
–init-file=C:\mysql-init.txt

The appropriate –defaults-file setting can be found using the Services Manager:

Start Menu -> Control Panel -> Administrative Tools -> Services

Find the MySQL service in the list, right-click on it, and choose the Properties option. The Path to executable field contains the –defaults-file setting. Be sure to supply the –init-file argument with the full system path to the file, regardless of your current working directory

Stop the MySQL server, then restart it in normal mode again. If the MySQL server is ran as a service, start it from the Windows Services window. If you start the server manually, use whatever command you normally use.
Connect to MySQL server by using the new password.

Tuesday, 16 October 2007

Start of Week


-- function to return the date of Monday in a week
CREATE Function StartOfWeek
(
@date datetime = null
)
RETURNS datetime
AS
BEGIN
DECLARE @Monday datetime

IF @date IS NULL
SET @date = GetDate()

-- round to midnight
SET @date = dateadd(dd,0, datediff(dd,0, @date))

SET @Monday = DateAdd(d, -((@@DATEFIRST + DatePart(dw, @date) -2) % 7), @date)

RETURN @Monday
END

Thursday, 6 September 2007

Java TestMySql


import java.sql.*;

public class TestMysql
{
public static void main(String args[])
{

Connection conn = null;

try {
/* Test loading driver */

String driver = "com.mysql.jdbc.Driver";

System.out.println( "=> loading driver:" );
Class.forName( driver );
System.out.println( "OK" );

/* Test the connection */

String url = "jdbc:mysql://localhost:11819/test";

System.out.println( "=> connecting:" );
conn = DriverManager.getConnection( url, "test", "test" );
System.out.println( "OK" );

printQueryResults(conn, "SELECT VERSION()");

if(conn != null)
conn.close();

}
catch( Exception x ) {
x.printStackTrace();
}

}

public static void printQueryResults(Connection conn, String SQLquery)
throws Exception {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(SQLquery);
int columns = rs.getMetaData().getColumnCount();
System.out.println("------------------------");
System.out.println();
while (rs.next()) {
for (int i = 1; i <= columns; i++) {
System.out.println(rs.getString(i));
}
System.out.println();
}
rs.close();
stmt.close();
System.out.println("------------------------");
System.out.flush();
Thread.sleep(100); // wait for System.out to finish flush
}


}


Jave Paths

export CLASSPATH=.:/home/phil.lewin/java/packages/mysql-connector-java-5.0.6-bin.jar:
javac TestMysql.java
/usr/java/jdk1.6.0/bin/java TestMysql

Monday, 3 September 2007

Friday, 31 August 2007

Rounding datetime to midnight

SQL Server
select dateadd(dd,0, datediff(dd,0, datetimeval)) as date_at_midnight

MySql
SELECT DATE_FORMAT(now(), '%Y-%m-%d 00:00:00')

To copy files from one Linux server to another

scp *_200704.* root@ipaddress:/var/lib/mysql/dbname/

Run a script for all servers

for /f %i in (servers.txt) do SQLCMD -S%i -i C:\myscript.sql

Changing the Default Collation

Shutdown Microsoft® SQL Server™ 2000, and then run Rebuildm.exe. This is located in the Program Files\Microsoft SQL Server\80\Tools\Binn directory.
In the Browse for Folder dialog box, select the \Data folder on the SQL Server 2000 compact disc or in the shared network directory from which SQL Server 2000 was installed, and then click OK.
Click Settings. In the Collation Settings dialog box, verify or change settings used for the master database and all other databases.
Initially, the default collation settings are shown, but these may not match the collation selected during setup. You can select the same settings used during setup or select new collation settings. When done, click OK.
In the Rebuild Master dialog box, click Rebuild to start the process.
The Rebuild Master utility reinstalls the master database.

we use: Latin1_General_CI_AS

Passing XML to a Stored Procedure

declare @sXML xml -- for SQL2000 use varchar(2000)
set @sXML = '

'

DECLARE @hDoc int
DECLARE @zip TABLE (PostalCode varchar(15))
exec sp_xml_preparedocument @hDoc OUTPUT, @sXML
INSERT @zip
SELECT PostalCode
FROM OPENXML(@hDoc, 'root/ZipCode')
WITH (PostalCode VARCHAR(20))
EXEC sp_xml_removedocument @hDoc
SELECT * FROM @Zip

Who's got all the terminal services sessions?

qwinsta /server:SERVERNAME

SSRS Colours

Yellow:#FFCC33
Grey: #EBEBEB
Blue: #3399CC

=iif(RowNumber(Nothing) Mod 2, "white", "#EBEBEB")

H1: 18pt
H2: 10pt 0.5cm field height
Data: 8pt 0.5cm field height
PORTRAIT:
Margins: 1cm all round
Pagesize: 21cm * 29.7cm
Full width tables start at 0.25 and finish at 18.75
LANDSCAPE:
Margins: 1cm all round
Pagesize: 29.7cm * 21cm
Full width tables start at 0.25 and finish at 27.5

Latitude/Longitude from Google Maps

To get the latitude/longitude from google maps:

1. Search for the location. The map will centre on that location.
2. Paste the following text into the address bar:
javascript:void(prompt('',gApplication.getMap().getCenter()));


If you scroll the map then this will show a false location.

To display a latitude/longitude position type them into google maps search box separated by a space.