Я экспортирую данные из SQL Server в плоский файл (csv). Но я заметил несоответствие между результатом использованного пространства (поле данных результата) таблицей, возвращаемой sp_spaceused, и пространством после данных, экспортированных в csv.

Например. sp_spaceused показывает используемое пространство таблицей 2 ГБ Но после экспорта в файл csv он занимает 7 ГБ.

Может кто-то помочь мне с этим.

0
ADITYA PAWAR 14 Апр 2020 в 23:27

1 ответ

Лучший ответ

Вот причины, по которым CSV может быть больше:

  • Запятые и новые строки не имеют эквивалента в представлении базы данных.
  • 4-байтовое целочисленное значение занимает 4 байта в базе данных, но может содержать до 11 символов в файле (например, -1 000 000 000).
  • Строка может быть сохранена с использованием широких наборов символов, но храниться в виде отдельных байтов.
  • date занимают 3 байта в базе данных, но, вероятно, 10 символов (ГГГГ-ММ-ДД) в наборе результатов.
  • datetime занимают 8 байтов в базе данных, но 19–23 символа в результирующем наборе.

Несомненно, есть и другие примеры.

Размер также может быть меньше. У базы данных есть накладные расходы, которых нет в файле CSV:

  • Используемое пространство на страницах.
  • Нулевые флаги.
  • Маленькие числа. «1» занимает только один символ в CSV, но 4 байта в данных.

И без сомнения другие примеры.

1
Gordon Linoff 15 Апр 2020 в 00:22