CSVファイルから SQL Serverへのデータ読み込み速度向上のため調べたもの。
結局使わなかったけど。
コマンドプロンプトから、たとえば
bcp "tablename" IN "C:\csvfilename"
-c -r\n -t, -q -b1000 -U username -P password
または
BULK INSERT tablename from "C:\csvfilename"
(ただし所有者のみ)
※テーブルの列サイズが小さいと「文字列データの右側が切り捨てられました。」とエラーになる。
2010年12月17日金曜日
SQLServerでのテーブル構造とデータ型の取得
ORACLEでは静的ディクショナリ表でテーブル構造を調べることができるのは知っていたけど、SQL Serverではこうやるらしい。
SELECT LEFT(name,30) as colname, xtype, length
FROM syscolumns
WHERE id=( SELECT id FROM sysobjects WHERE name = 'テーブル名')
ORDER BY colid
■ xtype値とデータ型の関係
52,56:整数型(Long)
62,106:実数型(Double)
167:length>255ならメモ型(Memo)、その他はテキスト型(Text)
61:日付型(DatteTime)
SELECT LEFT(name,30) as colname, xtype, length
FROM syscolumns
WHERE id=( SELECT id FROM sysobjects WHERE name = 'テーブル名')
ORDER BY colid
■ xtype値とデータ型の関係
52,56:整数型(Long)
62,106:実数型(Double)
167:length>255ならメモ型(Memo)、その他はテキスト型(Text)
61:日付型(DatteTime)
SQLServerでの文字型列の数値変換
■CAST関数を使う
1) 文字型列の値を数値変換して並べる
SELECT DISTINCT CAST(列名 AS NUMERIC) AS COL
FROM テーブル名
ORDER BY COL
2) 最大+1の番号をNEXTIDとして取得する
SELECT MAX(CAST(列名 AS NUMERIC))+1 AS NEXTID
FROM テーブル名
1) 文字型列の値を数値変換して並べる
SELECT DISTINCT CAST(列名 AS NUMERIC) AS COL
FROM テーブル名
ORDER BY COL
2) 最大+1の番号をNEXTIDとして取得する
SELECT MAX(CAST(列名 AS NUMERIC))+1 AS NEXTID
FROM テーブル名
OSQLで使えるストアドプロシージャについてのメモ書き
マニュアルとか何もない状態で調べたOSQLで使えるストアドプロシージャについてのメモ書き。
(ACCESSプロジェクトにてMSDEへ接続し「ストアドプロシージャ」を参考に調査。)
■オブジェクト一覧(?)を表示
exec sp_help
go
■データベース情報を表示
exec sp_help_fulltext_tables
go
■ユーザー情報の表示
exec sp_helpuser
go
(参考;select * from master.dbo.sysusers)
■ログインID情報を表示
exec sp_helplogins
go
(参考;select * from master.dbo.syslogins)
■テーブルのインデックスを調べる
exec sp_helpindex TB_EXAMCODE_MASTER
go
■テーブル一覧を表示
exec sp_tables [table_name[,owner]]
go
■データベース接続情報(?)を表示
exec sp_who (またはsp_who2)
go
■データベース内オブジェクト一覧表示
use simlabodb
select left(name,40) as objname, id, xtype
from sysobjects
where xtype = 'U'
go
----------------------------------
xtype = S ・・・ System Table
P ・・・ Stored Procedure
U ・・・ User Table
V ・・・ View
PK ・・・ Primary Key
■テーブルの列名一覧を表示
select left(name,40) as objname, xtype, length, colid
from syscolumns
where id=( select id
from sysobjects
where name='TB_EXAM_RESULT')
order by colid
go
■全テーブルの列名一覧
select Left(so.name,20) as tblname,
Left(sc.name,20) as colname,
sc.xtype,
sc.length,
sc.colid
from syscolumns sc,
sysobjects so
where sc.id=so.id
order by tblname, sc.colid
GO
(ACCESSプロジェクトにてMSDEへ接続し「ストアドプロシージャ」を参考に調査。)
■オブジェクト一覧(?)を表示
exec sp_help
go
■データベース情報を表示
exec sp_help_fulltext_tables
go
■ユーザー情報の表示
exec sp_helpuser
go
(参考;select * from master.dbo.sysusers)
■ログインID情報を表示
exec sp_helplogins
go
(参考;select * from master.dbo.syslogins)
■テーブルのインデックスを調べる
exec sp_helpindex TB_EXAMCODE_MASTER
go
■テーブル一覧を表示
exec sp_tables [table_name[,owner]]
go
■データベース接続情報(?)を表示
exec sp_who (またはsp_who2)
go
■データベース内オブジェクト一覧表示
use simlabodb
select left(name,40) as objname, id, xtype
from sysobjects
where xtype = 'U'
go
----------------------------------
xtype = S ・・・ System Table
P ・・・ Stored Procedure
U ・・・ User Table
V ・・・ View
PK ・・・ Primary Key
■テーブルの列名一覧を表示
select left(name,40) as objname, xtype, length, colid
from syscolumns
where id=( select id
from sysobjects
where name='TB_EXAM_RESULT')
order by colid
go
■全テーブルの列名一覧
select Left(so.name,20) as tblname,
Left(sc.name,20) as colname,
sc.xtype,
sc.length,
sc.colid
from syscolumns sc,
sysobjects so
where sc.id=so.id
order by tblname, sc.colid
GO
登録:
投稿 (Atom)