テーブル名で大文字・小文字の区別をしているか確認するには ( MySQL ・ SQLServer ・ PostgreSQL ・ SQLite )

SQLを発行する際、小文字でテーブル名を書くことに慣れていると、
他サーバからテーブルをインポートした際、元のテーブル名が大文字だと
テーブルが見つからず、エラーとなることがあります。

管理面からも、大文字、小文字を区別して、同名のテーブルができてしまったりするのは
望ましくないので、大文字・小文字を区別しない設定にするのが一般的だと思います。

以下は、テーブルが見つからないときの、大文字、小文字を区別する設定の
確認方法です。

・MySQL
以下のSQLを実行
show variables where variable_name=’lower_case_table_names’;

<返り値>
0…大文字小文字を区別
1…大文字小文字を区別しない(テーブル名をすべて小文字にして格納)
2…大文字小文字を区別しない(テーブル名をそのまま格納)

1が望ましいと思います。
Linuxでは2はないそうです。
また、既存テーブルは、設定を変更して再起動しても変わらないので再作成が必要です。

 

・SQLServer
ストアド プロシージャ sp_server_info を実行してから、
行 18 の内容を調べる。
大文字と小文字を区別しない設定でサーバーがインストールされている場合は、
sort_order のオプションが nocase に設定されている

 

Postgre と SQLite は少し異なります。

・PostgreSQL
テーブル名に大文字を使うときはダブルクォーテーションで囲む
select * from “SAMPLE_TABLE”

 

・SQLite
テーブル名の大文字、小文字は区別しない

PHPでPDOを使っていても、テーブル名の設定によってはSQLに変更が
必要だったりするので、注意が必要ですね。
個人的には、大文字、小文字の区別を有効にし、
小文字で統一したいところです。

<参考サイト>

http://huge.mints.ne.jp/01/2014/it_technique/735/

http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_lower_case_table_names

http://msdn.microsoft.com/ja-jp/library/aa290124%28v=vs.71%29.aspx#dvmsccasesensitivity

http://devlights.hatenablog.com/entry/20080223/p1

「Microsoft SQL Server Management Studio」を使って データのインポート(インサート)をするには

インポートするデータはエクセルで作っておけばOKです。
そのデータを(見出しを除き)、コピーします。

対象のテーブルを右クリックし、「上位200行の編集」をクリック、
表示される表の最終行を右クリックし、「貼り付け」を選択すると
データが挿入されます。

「Microsoft SQL Server Management Studio」を使って データのエクスポートをするには

PHP で開発発しているとデータベースはほとんど MySQL を扱いますが
たまに SQL Server の案件も入ってきて忘れがちになるので、覚書です。

・対象のデータベースを右クリック
・タスクから、「データベースのエクスポート」を選択

「データソースの選択」画面で、サーバ名と認証、データベース名を
入力して、次へをクリックする

「変換先の選択」が開くので、「変換先」で、エクセルを選択する

あとはウィザードで細かな設定ができますが、そのまま完了でもOK。