Создание таблиц базы данных
gsqlcmd позволяет генерировать операторы CREATE TABLE.
Например, файл aapl.csv имеет следующее содержимое:
symbol;time;open;high;low;close;volume AAPL;2019-04-09 13:30:00;200.3200;200.4500;199.68;200.3800;1332001 AAPL;2019-04-09 13:31:00;200.3726;200.8850;200.32;200.6920;351343
Вы можете сгенерировать код для создания таблицы для хранения этих данных, используя режим make-create:
gsqlcmd make-create aapl.csv create-yahoo1m.sql /table=dbo.yahoo1m /mssql
Используйте опцию /table, чтобы указать имя целевой таблицы.
Используйте опцию /serverType, чтобы указать целевую платформу базы данных.
Опцию /serverType можно указать как /mssql, /sqlce, /mysql, /oracle, /db2, /nuodb, /pgsql, /snowflake или /sqlite.
Выходной файл create-yahoo1m.sql будет содержать следующее:
CREATE TABLE [dbo].[yahoo1m] ( [ID] int IDENTITY(1,1) NOT NULL, [symbol] nvarchar(255) NULL, [time] datetime NULL, [open] float NULL, [high] float NULL, [low] float NULL, [close] float NULL, [volume] int NULL, CONSTRAINT [PK_yahoo1m_dbo] PRIMARY KEY ([ID]) ); GO print N'Table [dbo].[yahoo1m] created'; GO
По умолчанию gsqlcmd добавляет поле ID, используемое в качестве поля IDENTITY, если исходные данные не содержат столбец с уникальными целочисленными значениями.
Вы можете использовать опцию /keys для указания полей первичного ключа.
Например:
gsqlcmd make-create aapl.csv create-yahoo1m.sql /table=dbo.yahoo1m /mssql /keys=symbol,time
В этом случае, create-yahoo1m.sql будет иметь следующее содержимое:
CREATE TABLE [dbo].[yahoo1m] ( [symbol] nvarchar(255) NOT NULL, [time] datetime NOT NULL, [open] float NULL, [high] float NULL, [low] float NULL, [close] float NULL, [volume] int NULL, CONSTRAINT [PK_yahoo1m_dbo] PRIMARY KEY ( [symbol], [time] ) ); GO print N'Table [dbo].[yahoo1m] created'; GO
gsqlcmd автоматически определяет типы данных столбцов. Тем не менее, их следует проверить и изменить по необходимости.
Всегда проверяйте поля nvarchar(255). Например, в приведенном выше коде для поля symbol лучше использовать varchar(25).
Если вы создали файл формата для переименования имен столбцов, используйте его в опции /formatFile.
Например:
gsqlcmd make-create aapl.csv create-yahoo1m.sql /table=dbo.yahoo1m /mssql /keys=symbol,time /formatFile=yahoo1m.fmt